- ベストアンサー
Perlでのメール送信
ご存知の方がいましたら、教えて下さい。 HPとメールが利用可能なホスティングを活用しています。 環境は以下となります。 (1)HPはホスティング (2)メールは自社環境 実施したいこと HPから同じドメインの自社メールサーバーへメールを送信 HP(www.xxxxx.co.jp)からaaa@xxxxx.co.jpへメールを送ると、同一ドメインに対するメールは、レンタルサーバー内にあるメールへの送信となり、外部に送信できません。 今は以下のように記述しています $mailto = 'aaa@xxxxx.co.jp' ; メールサーバーを指定してメール送信する記述方法などがありましたら、アドバイスをお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SMTPサーバーを外部にする以外の解決方法もあるのでコメントしました。 ただし、ホスティングの環境に依存してしまうため、 場合によっては有効な手段ではないかもしれません。 1つの解決方法ですが、DNSの設定を入れることです。ホスティング環境の名前解決で使用しているネームサーバー(レゾルバ)のmxレコードの設定で自社環境のIPを指定するということです。 ただしこれはホスティングの環境に依存してしまいますので有効な解決策かどうかは試してみないとわかりません。 (WEBの設定とメールの設定が連動しているとできないと思われます) 2つめの方法としては転送することで回避することができるかもしれません。(但し、これも環境に依存してしまいます) ホスティング環境のメールアカウントに転送設定をかけて、サブドメインに転送するようにします。(aaa@jisha.xxxx.co.jp) サブドメインのAレコードもMXレコードも自社側のサーバーをしておきます。 自社サーバー側でサブドメインでもメールを受信できるようにしておけばメールの受信ができると思います。 参考になりましたら。
その他の回答 (1)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
以下のように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;
お礼
>_--_1l1_1_さん 早速のご回答ありがとうございます。 perl記述に不慣れなので、教えて頂いた情報を元に格闘してみます。 >質問には直接関係ないですが、社外のメールクライアントからの SMTP送信要求は、セキュリティではじかれませんか? これも確認してみます。 ありがとうございました。
お礼
>ohnosatoruさん ホスティングサービスで、CGIを稼働させるサーバーのDNSで、 自社サーバ向けにすることができ、perlの記述を変更する必要がなく、解決することができました! ちなみに、ホスティングサービスはNTTcomのメール&ウェブProです。 アドバイスありがとうございました。