• 締切済み

net::smtp port設定

以下のコードでメールを送信したいのですが、デバッグのために書いたConnect failed over tls at /var/www/cgi-bin/net_smtp.cgi line 13.エラーが消えません。 ポートの部分を取り払うとコンパイルは出きるのですが、送信してくれません。何か間違っているところがあるのでしょうか?  #!/usr/bin/perl -w use POSIX; use Net::SMTP; use MIME::Entity; my $un = "****"; my $pw = "****"; my $SMTP_Port = '587'; #オブジェクトの作成 $smtp = Net::SMTP->new( Port=> $SMTP_Port, '********', #SMTPサーバ Hello=>'********')|| die "Connect failed over tls"; #SMTPサーバのドメインを指定 $smtp->auth(<*$un*>, <*$pw*>); #ヘッダ部の組み立て $smtp->mail('*******@********');#送信元の指定 $smtp->to('*******@**********'); #宛先の指定 #データ部の組み立て(MIME::Entityによるデータの作成) $smtp->data(); #$oMime = MIME::Entity->build( From => 'test', #送信元(データ部) To => 'test', #宛先(データ部) Subject => "easy mail sending", #件名 Data => ["simple mail2¥n", "MailTest¥nhello world¥n"]); $smtp->dataend(); #SMTP接続の終了 $smtp->quit;

  • CGI
  • 回答数1
  • ありがとう数1

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

まずは、使っているメールサーバのポート番号が 587 なのか 25 なのかをもう一度確認されては? それから、どんな認証処理が必要かどうかも確認された方が良いかと。(SASL, POP before SMTPなど) また、Net::SMTP ではデバッグオプションが有るので、それを有効にして実行すると何か分かるかも知れません。 http://perldoc.jp/docs/modules/libnet-1.12/Net/SMTP.pod#pod12467 例) ----------------------------------------- #オブジェクトの作成 $smtp = Net::SMTP->new( Port=> $SMTP_Port, '********', #SMTPサーバ Hello=>'********', Debug => 1)|| die "Connect failed over tls"; #SMTPサーバのドメインを指定 ---------------------------------------------

MASA0901
質問者

お礼

ありがとうございます。早速試してみます。

関連するQ&A

  • MIME::EntityやNet::SMTPを使わずに、HTMLメールはできるのでしょうか?

    perl5.6を使っています。 MIME::EntityやNet::SMTPを使わずに、HTMLメールはできるのでしょうか?

    • ベストアンサー
    • Perl
  • SMTP設定

    Adaptec RAID 71605E を使っていまして、SMTPによるメールでのエラー等の情報取得をしたいのですが、今一設定がうまくいきません。 SMTP Server Settings SMTP Server Address ? SMTP Server Port =467 又は 587 ? Sender Information From Email address 普通に送信元のEメールアドレス Use Secure Mail Server チェックon 下のIDとPass を入力 使っているのは、yahoooメールとgoogleメールです。 やりやすい方で、教えて下さい。 お願いします。

  • net::smtp port設定

    設定でDebugを出きるようにしてコンパイルしてみたら以下のような結果が帰ってきました。送信はできているように見えるのにメールは届きません。どこが間違っているのでしょうか? Use of uninitialized value in string ne at /var/www/cgi-bin/net_smtp.cgi line 15. login #POP3の認証をした。loginとprintされているので通ったはず。 Net::SMTP>>> Net::SMTP(2.31) Net::SMTP>>> Net::Cmd(2.29) Net::SMTP>>> Exporter(5.63) Net::SMTP>>> IO::Socket::INET(1.31) Net::SMTP>>> IO::Socket(1.31) Net::SMTP>>> IO::Handle(1.28) Net::SMTP=GLOB(0xa027cd0)<<< 220 msa03b.plala.or.jp ESMTP server ready Mon, 7 Mar 2011 14:03:31 +0900 Net::SMTP=GLOB(0xa027cd0)>>> EHLO localhost.localdomain Net::SMTP=GLOB(0xa027cd0)<<< 250- <domain> Net::SMTP=GLOB(0xa027cd0)<<< 250-PIPELINING Net::SMTP=GLOB(0xa027cd0)<<< 250-DSN Net::SMTP=GLOB(0xa027cd0)<<< 250-8BITMIME Net::SMTP=GLOB(0xa027cd0)<<< 250 SIZE 20971520 Net::SMTP=GLOB(0xa027cd0)>>> MAIL FROM:<.....> Net::SMTP=GLOB(0xa027cd0)<<< 250 Sender <......> Ok Net::SMTP=GLOB(0xa027cd0)>>> RCPT TO:<.......> Net::SMTP=GLOB(0xa027cd0)<<< 250 Recipient <......> Ok Net::SMTP=GLOB(0xa027cd0)>>> DATA Net::SMTP=GLOB(0xa027cd0)<<< 354 Ok Send data ending with <CRLF>.<CRLF> Net::SMTP=GLOB(0xa027cd0)>>> . Net::SMTP=GLOB(0xa027cd0)<<< 250 Message received: 20110307050332.OKQD27506 <domein>@localhost.localdomain Net::SMTP=GLOB(0xa027cd0)>>> QUIT Net::SMTP=GLOB(0xa027cd0)<<< 221 <domain> ESMTP server closing connection

    • 締切済み
    • CGI
  • PerlでSMTP-AUTH認証をする

    現在、さくらのレンタルサーバにてperlスクリプトを稼動しています。 今回、さくらのレンタルサーバのメール認証がPOP before SMTPからSMTP認証(SMTP-AUTH)に変更になりましたので、perlスクリプト内で自動メール送信させるのにNet::SMTP::TLSモジュールを利用することにしました。そこで (1)SMTPサーバー名、ポート番号、ユーザー名、パスワードを設定する (2)宛先などの必要な設定をする (3)メール内容を設定する (4)メールヘッダを設定する (5)メールを送信する という流れで現在perlスクリプトを以下のように記述しました。 #!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); use Net::SMTP::TLS; use Authen::SASL; my $smtp = Net::SMTP::TLS->new($mailhost, Port => $mailport, User => $mail_username, Password => $mail_password ); $smtp->mail($from_mail); $smtp->to($tomail); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; 変数の値は割愛していますが、 上記のスクリプトは、POP before SMTPの時は問題なくメール送信できたのですが、サーバのメール認証がSMTP認証(SMTP-AUTH)に変更になってからは以下のようなエラーが出ます。 invalid SSL_version specified at /usr/local/perl/5.8/lib/perl5/site_perl/5.8/IO/Socket/SSL.pm line 418 何か間違いであるとか、他に必要な設定がありますでしょうか? 宜しくご教授お願いいたします。

    • ベストアンサー
    • Perl
  • SMTP SSL/TLSについて

    SMTP SSL/TLSというものについて分かりやすく教えていただけないでしょうか? 通信を暗号化するものだということですが、暗号化されるのはパスワードのみですか?メールの内容も暗号化されるのでしょうか? SMTP SSL/TLSを使って送信すると、相手にメールがとどくまで、全て暗号化されて安心ということでしょうか? 現在使っているメールサービスがSMTP SSL/TLS対応(SSL/TLSでない送信も可)ですが、使っているメールソフトはSSL/TLS非対応です。SSL/TLSに対応しているソフトを使えばいいと思いますが、出来れば使い慣れたものを使い続けたいと思っております。SSL/TLSを使わずに送信する事がどれほど危険性があるものかも教えていただけますでしょうか?

  • NET::SMTPについて

    おねがいします。 NT環境からperlでメール送信したいと思っています。 NET::SMTPをPPMでダウンロードしました。 以下のサンプルプログラムを得て、SMTPサーバ名など を入れました。でも、エラーにはなりませんが送信されず。 そもそも、IDとpassの認証部分がないですよね。 このサンプルだと「SMTPサーバ名さえわかれば誰でも そのSMTPサーバからメールできちゃう」ってことに なりませんか?? 他の方の質問にあった、 $smtp->auth( USERNAME, PASSWORD ); も試しましたが、エラーになりました。 認証うける方法があるのでしょうか? よろしくおねがいします。 #!/usr/local/bin/perl -w use Net::SMTP; $smtp = Net::SMTP->new('mailhost'); $smtp->mail($ENV{USER}); $smtp->to('postmaster'); $smtp->data(); $smtp->datasend("To: postmaster\n"); $smtp->datasend("\n"); $smtp->datasend("A simple test message\n"); $smtp->dataend(); $smtp->quit;

  • UTF8コードでのメール送信

    現在、以下の内容でメールサーバおよびシステムを運用してます。 レンタルサーバを以下の内容で OS:FreeBsd DB:postgresql (eucコードで運用) PG:perl5.8.8  (eucコードで記述) 最近、当システムから携帯電話(スマートフォン含む)へのメール送信で受信側(携帯)で文字化けが多くなっている。それで、システムの一部のUTF8化しようと思いました。それで、メール送信のライブラリを以下のように修正してみたが、本文が文字化けしてしまいます。なぜ文字するか原因がわかりません。 以下のソースはUTF8Nで記述しています。 ※システム全部をUTF8コード化やDB(POSTGRESQL)もUTF8にする案もありますが、 改修作業が大きくて作業時間が少ない方法も模索しています。 どなたかご教授願います。 binmode(STDOUT, ":utf8"); use Encode; use Encode qw(from_to); use MIME::Base64; use MIME::Entity; use Net::SMTP; use MIME::Words qw (:all); sub sendmail() { my ($mail_date) = @_; <==メールのハッシュ配列(DBに登録されているメールの件名、本文) my $smtp_server = $mail_date->{SMTPsrv}; my $smtp_port = '25'; # 送信者のメールアドレスを設定する。 my $mail_from = $mail_date->{MailFr}; # 宛先のメールアドレスを設定する。 my $mail_to = $mail_date->{MailTo}; # メールの件名を設定する。 from_to($mail_date->{Subjct},"euc-jp","utf8"); #UTF8に変換 $utf8_str_sub = $mail_date->{Subjct}; # メールの内容を設定する。 my $message; my $utf8_str; from_to($mail_date->{Message},"euc-jp","utf8"); #UTF8に変換 $message = $mail_date->{Message}; $utf8_str = $message; # メールヘッダを作成する。 # from、to、件名共にMIME-Header(UTF-8)へエンコードします。 my $mail_header; $mail_header = "From: " .encode('MIME-Header-ISO_2022_JP',$mail_from)."\n"; $mail_header .= "To: " .encode('MIME-Header-ISO_2022_JP',$mail_to) ."\n"; $mail_header .= "Subject: ".encode('MIME-Header-ISO_2022_JP',$utf8_str_sub) ."\n"; # UTF-8とbase64 encodeを使う事を明記します。 $mail_header .= "MIME-Version: 1.0\n"; $mail_header .= "Content-type: text/plain; charset=utf-8\n"; $mail_header .= "Content-Transfer-Encoding: base64\n"; $mail_header .= "\n"; # SMTPでメールを送る。 my $SMTP = Net::SMTP->new($smtp_server,Port=>$smtp_port); $SMTP->mail($mail_from); $SMTP->to($mail_to); $SMTP->data(); $SMTP->datasend($mail_header); $SMTP->datasend(encode_base64(encode('utf8', $utf8_str))); $SMTP->dataend(); $SMTP->quit; }

  • Net::SMTPでのメール送信について

    Net::SMTPモジュールを利用してメール送信をしています。 複数の宛先にメールを送る場合に、 my ($smtp) = Net::SMTP->new($smtp_server); $smtp->to('****@hogehoge.com', '**@mogemoge.com'); とすれば、複数に送れるのですが、 my ($mail_to) ='\'****@hogehoge.com\',\'**@mogemoge.com\''; として $smtp->to($mail_to); とするとメールを送信することが出来ません。 何故でしょうか?教えてください。

    • ベストアンサー
    • Perl
  • MIME::LiteをSMTPで送信すると「ファイル番号が違います。」というリターンが帰って来る。

    MIME::Liteパッケージについての質問です。 現在MIME::Liteパッケージを使用してメールを転送する プログラムを作成しております。 メールは正常に送信できるのですが、MIME::Liteのsendメソッド実行後の"$!"に「ファイル番号が違います。」というメッセージが格納されます。これは何を意味しているのでしょうか?よろしくお願いします。 <コード> #!/usr/bin/perl # パッケージ指定 use Net::SMTP; use Net::POP3; use MIME::Lite; use MIME::Base64; use Jcode; # メールcfgを読み込み require "$ARGV[0]"; # メールサーバを指定 $MAILSERVER = 'hoge'; # コンテナを作成 my $msg = MIME::Lite->new( From => "$FROM", To => "$TO", cc => "$CC", Bcc => "$BCC", Subject => "$SUBJECT", Type => 'multipart/mixed' ); # メッセージを追加 $msg->attach( Type => 'text/plain; charset="iso-2022-jp"', Data => "$MESSAGE" ); # 添付ファイルが指定されているかチェック if (! $FILEPATH eq "" ) { # 添付ファイルが存在するかチェック if (! -e $FILEPATH ) { print "添付ファイル名:$FILEPATH\n"; exit 67; } else { # FILENAMEをGET $NUM = rindex($FILEPATH,'/'); $FILENAME = substr($FILEPATH, $NUM+1); # 添付ファイルを追加 $msg->attach( Type => 'application/octet-stream', Disposition =>'attachment', Encoding => 'Base64', Filename => "$FILENAME", Path => "$FILEPATH" ); } } # メール送信 $msg->send('smtp', $MAILSERVER); if (! "$!" eq "" ) { exit 68; } print "メールの送信が完了しました\n"; exit 0; <環境> OS:solaris 8 Perl:version 5.005_03

    • ベストアンサー
    • Perl
  • SMTP

    SMTPでメールを手動で送信させる場合に、DATA部にケータイの絵文字を表示させたい場合はどのように記述して送信すればよいのでしょうか?