• ベストアンサー

Perlでのメール送信

ご存知の方がいましたら、教えて下さい。 HPとメールが利用可能なホスティングを活用しています。 環境は以下となります。 (1)HPはホスティング (2)メールは自社環境 実施したいこと HPから同じドメインの自社メールサーバーへメールを送信 HP(www.xxxxx.co.jp)からaaa@xxxxx.co.jpへメールを送ると、同一ドメインに対するメールは、レンタルサーバー内にあるメールへの送信となり、外部に送信できません。 今は以下のように記述しています $mailto = 'aaa@xxxxx.co.jp' ; メールサーバーを指定してメール送信する記述方法などがありましたら、アドバイスをお願い致します。

  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

SMTPサーバーを外部にする以外の解決方法もあるのでコメントしました。 ただし、ホスティングの環境に依存してしまうため、 場合によっては有効な手段ではないかもしれません。 1つの解決方法ですが、DNSの設定を入れることです。ホスティング環境の名前解決で使用しているネームサーバー(レゾルバ)のmxレコードの設定で自社環境のIPを指定するということです。 ただしこれはホスティングの環境に依存してしまいますので有効な解決策かどうかは試してみないとわかりません。 (WEBの設定とメールの設定が連動しているとできないと思われます) 2つめの方法としては転送することで回避することができるかもしれません。(但し、これも環境に依存してしまいます) ホスティング環境のメールアカウントに転送設定をかけて、サブドメインに転送するようにします。(aaa@jisha.xxxx.co.jp) サブドメインのAレコードもMXレコードも自社側のサーバーをしておきます。 自社サーバー側でサブドメインでもメールを受信できるようにしておけばメールの受信ができると思います。 参考になりましたら。

natsu_020
質問者

お礼

>ohnosatoruさん ホスティングサービスで、CGIを稼働させるサーバーのDNSで、 自社サーバ向けにすることができ、perlの記述を変更する必要がなく、解決することができました! ちなみに、ホスティングサービスはNTTcomのメール&ウェブProです。 アドバイスありがとうございました。

その他の回答 (1)

回答No.1

以下のようにSMTPサーバのIPアドレスを直接指定すればできるかもしれま せん。質問には直接関係ないですが、社外のメールクライアントからの SMTP送信要求は、セキュリティではじかれませんか? ---- #!/usr/bin/perl use warnings; use strict; use utf8; use Encode; use Net::SMTP; # Require Authen::SASL Module use Net::SMTP::SSL; use MIME::Entity; my $mail_to = 'xxx@xxx'; my $mail_from = 'yyy@yyy'; my $mail_subject = '件名'; my $mail_body = << 'END_MAILBODY'; 本文1 本文2 END_MAILBODY $mail_subject = encode( 'MIME-Header-ISO_2022_JP', $mail_subject ); $mail_to = encode( 'MIME-Header-ISO_2022_JP', $mail_to ); $mail_from = encode( 'MIME-Header-ISO_2022_JP', $mail_from ); $mail_body = encode( 'ISO_2022_JP', $mail_body ); my $mime = MIME::Entity->build( From => $mail_from, To => $mail_to, Subject => $mail_subject, Type => "text/plain; charset=ISO-2022-JP", Data => $mail_body ) or die "mime build error : $!"; my $smtp_server = 'STMP サーバの IP アドレス; my $smtp = Net::SMTP->new( $smtp_server, Debug => 1 ) || die "smtp conn error : $!"; # SMTP 認証ありのとき my $smtp_acc = 'xxxxx; my $smtp_pwd = 'yyyyy; $smtp->auth( $smtp_acc, $smtp_pwd ) or die "smtp auth error: $!"; $smtp->mail($mail_from); $smtp->to($mail_to); $smtp->data(); $smtp->datasend( $mime->stringify ) or die "data send error : $!"; $smtp->dataend() or die "data end error : $!"; $smtp->quit;

natsu_020
質問者

お礼

>_--_1l1_1_さん 早速のご回答ありがとうございます。 perl記述に不慣れなので、教えて頂いた情報を元に格闘してみます。 >質問には直接関係ないですが、社外のメールクライアントからの SMTP送信要求は、セキュリティではじかれませんか? これも確認してみます。 ありがとうございました。

関連するQ&A

  • 同一ドメインの別サーバにCGIからメール送信できません

    独自ドメインでサイトを運営しています。 メールサーバとWEBサーバは別々のホスティングを使用しています。 WEBサーバにメール送信のCGIを設置しました。 他ドメイン宛には正常に送信できるのですが、同じ独自ドメインのメールアドレス宛に送信することができません。 formに別ドメインのアドレスを設定してみたのですが、送信ができなかった内容のエラーメールなども届いていません。 WEBサーバのホスティング業者に問い合わせたところ、サーバ側は適切に設定されていると回答されました。 メールサーバに迷惑メールブロックの機能があるようなので、スパム扱いされてしまっているのでしょうか? それとも、CGIに問題があるのでしょうか。 どこに原因があるのかがわからず困っています。 宜しくお願いいたします。

  • ■どちらでメールを送信したほうがいいのでしょうか?

    ■どちらでメールを送信したほうがいいのでしょうか? メールの送信のことで質問があります。 HP開設のためにドメインを持っている(レンタルサーバを借りています)ので、ドメインメールを持っています。 このドメインメールを送信する方法は、下記の2つがあります。 (1)レンタルサーバから与えられた送信サーバ情報を設定して送信。 (2)プロバイダー(レンタルサーバとは全く関係ありません)から与えられた送信サーバ情報を設定して送信。 認証の設定さえ変えれば、(1)(2)どちらでも送信することが可能です。 ※方式としては、どちらもsmtpです。 どちらで送信したほうがいいのでしょうか? 送信できるならどちらでもいいようにも思うし今までは(2)で送信していたのですが、ドメインメールなんだからやっぱり(1)にすべきなのかなとか思い迷っています。 初歩的なことだとは思いますが、助言いただければ嬉しく思います。

  • メールの送信のみできない

    ホスティングサービスを利用して 自分のところでドメインを持っています。 先日まで問題なく自社ドメインでメールの受信 送信が出来ていましたが突然できなくなりました。 下記のようにエラーメッセージがでます。 ----------------------- 受信者の1人がサ-バ-によって拒否されたため、メッセ-ジをそうしんできま せんでした。 サ-バ-の応答:550<***@********.com> Relaying denied. SMTPサ-バ-:mail.********.co.jp エラ-番号:0x800cc79 --------------------------- どのようなことでしょうか? 無線LANでつないでいます、またPC本体はWin ME です。

  • メール送信機能について

    basp21をつかってASPのプログラムからメールを送信しようとしています。 以下のようにプログラムしています。 <% Set ml=Server.CreateObject("basp21") smtpsrv="xxx.odn.ne.jp" mailto="xxx@hotmail.com" & Chr(9) mailto=mailto & "cc" & Chr(9) & "xxx@pop01.odn.ne.jp" & Chr(9) mailto=mailto & "reply-to" & Chr(9) & Request.Form("txtMail") mailfrom=Request("txtName") & "<" & Request("txtMail") & ">" sbj="感想" body=Request.Form("memo") file="" rc = ml.SendMail(smtpsrv,mailto,mailfrom,sbj,body,file) If rc="" Then Response.Write "感想を戴き、ありがとうございました" Else Response.Write rc End If %> Cant't connect Server というエラーが出力されメールが送信できません。 環境としてはクライアントに開発環境(PWS)を作って試験しています。 開発環境にはbasp21を設定済です。 レンタルサーバ(basp21が使用できる)にはまだアップしていません。

  • Perlを使ったCGIでHTMLメールの送信

    Perlを使ったCGIからHTMLメールの送信がしたいです。 そして、そのメール本文に、Formタグのボタンを付けて、そこからCGIのページを開きたいです。 メール送信はできていて、受信した時にHTML形式のメールになっているのですが、FormのボタンからさらにCGIを開こうとすると、ページは開いても、Body部分は空の状態のページが開きます。 そのFormの部分は、HTMLのページ上に設置するとそこからは希望通りのページの表示をしてくれます。 メール本文中にFormタグを設置してもうまく動かないのでしょうか。 CGIのメール送信部分は以下です。 my $mailtext =<<"MAILTO_TEXT"; To: aaa@bb.co.jp Cc: From: aaa@bb.co.jp Subject: テストです Content-Transer-Encording: 7bit Content-Type: text/html; charset=ISO-2022-JP テストです。<Br><BR> 下のボタンを押してご確認ください。<br><br> <form name="mst" method="post" action="aaaaaa.cgi" enctype="multipart/form-data"> <input name="submit" type="submit" value="詳細"></form> MAILTO_TEXT open(MAIL,"| $sendmail -f $mailto -t") ; print MAIL $mailtext; close (MAIL); おかしい部分、足りない部分などありましたら教えて下さい。 どうぞよろしくお願いいたします。

  • 自社ドメインアドレスのウイルスメールが届くなんて。。。

    レンタルサーバ(ホスティング)環境下で自社ドメインによるメールアドレスを用いていますが、先日、自社ドメイン(@以降が自社登録のドメイン)メールアドレスを用いたウイルスメールが届き、驚いています。@以前は"service"となっており、存在しない、つまり設定したことの無いIDです。そのメールのプロパティを精査しましたが、どう見ても"service@自社ドメイン"というメールアドレスを用いているようにしかみえません。ウイルス発信者がこんな手法を用いることは可能なのでしょうか。あるいは自社の中にウイルスに感染したPCがあり、そこから発信されたと考える方が妥当でしょうか。どなたかアドバイスお願いします。

  • OCNで独自ドメインのメールが送信できません。

    OCNで独自ドメインのメールが送信できません。 現在、当社では企業向けにホームページやWebシステム構築などのサービスを提供しています。 それに伴って、サーバーのホスティングもやっており、メールアドレスも提供しています。 半年ほど前からOCNを使っているお客様から、メールの送信が出来ないという苦情が散見するようになりました。 先日もメールアドレスを100近く運用しているお客様から、同じようにメールが送信出来ないといった苦情が寄せられ、対応に苦慮しております。状況を以下に箇条書きします。 ・POP3は当社のサーバー。SMTPはOCNのサーバーを利用している ・会社内ではメールの送受信は正常に行える ・モバイルPCと自宅のPCで同じように設定しているが、送信のみ出来ない(受信は可能) ・プロバイダはすべてOCN ・メーラーはすべてOutlookExpress ・こちらから、OCNで独自ドメインのメールを送受信するための設定が書かれたページを参考文献として提出したが、その通りに設定しても送信出来ない ・他のホスティング業者から提供されたメールアドレスを同じように設定すると、正常に送受信が出来る。メールアドレスをこちらのドメインのアドレスに変更すると送信が出来なくなる ・OCNのサポートに連絡したが、原因不明 以上のような状況です。 こちらのサーバーは、特にトラブルはなく正常に動作していて、他のお客様のところでは正常に送受信出来ています。もちろんOCNであっても、一部を除いて送信も出来ています。 こちらで作業出来る事は何も無いような気がしますが、なにか対処の方法はあるのでしょうか? サーバーはCentOS5+Postfixです。 よろしくお願いします。

  • メール送信タグについて

    HP上からメールソフトを起動してメール送信してもらう際に通常は <a href="mailto:**@**.**.jp?subject=○○&body=http://*****.com">URLをメールで送信</a> とかって記述しますよね? でもこれだとメーラーのあて先に「**@**.**.jp」が自動的に入力されてしまうのでこれを空欄にしてユーザーが手動でメールアドレスを入力するようにしたいのですができますか?

    • ベストアンサー
    • HTML
  • Outlook Expressでメールの 『送信』 が出来ません

    先日プロバイダを乗り換えました。 ぷららの『ぷらコミ3』に加入しています。 乗り換える前は、シャープスペースタウンの電話料金込みのプランに入っていました。 シャープスペースタウンのアドレスではメールの送受信共に可能でした。 <環境> 回線    ADSL接続 メーラー 『Outlook Express6』 メーラー設定をしなおしましたが、メールの送信だけができません(T-T) 受信は出来ます。 ↓以下の様に設定しました。 ・受信メールの種類     POP3 ・受信メール(POP3)  localhost  ・送信メール(SMTP)  xxxxx.mail.plala.or.jp ★メールの送信を行うと以下のようなエラーがでます★ 受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。 拒否された電子メール アドレス : xxxxx@xxx.xxx.ne.jp 件名 '', アカウント : 'plala', サーバー : 'xxxxx.mail.plala.or.jp', プロトコル : SMTP, サーバーの応答 : '550 relaying mail to mbb.sst.ne.jp is not allowed', ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 550, エラー番号 : 0x800CCC79 どなたか回答を宜しくお願いいたしますm(_ _)m

  • メールの送信のみ出来ません。

    OSのリカバリ後outlookの設定をしたのですが、受信はするのですが、 送信すると「送信者の電子メール アドレスが拒否されたため、メッセージを送信できませんでした。 送信者の電子メール アドレス : xxxxxxx@xxxxx.netwave.or.jp アカウント : 'ネットウェーブ四国', サーバー : 'xxxxx.netwave.or.jp', プロトコル : SMTP, サーバーの応答 : '550 5.7.1 Access denied', ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 550, エラー番号 : 0x800CCC78」 とエラーが出て送信出来ません。 過去の質問を見ましたが解決できなかったので、よろしくお願いします。

専門家に質問してみよう