電子書籍の厳選無料作品が豊富!

始めまして。
taki2といいます。
Perlのメール送信で使用するFromアドレスで分からない
事がありますので、アドバイスをよろしくお願いします。

-内容-
Fromをtaki@xxx.comと設定してメールを送信した場合、実際届くメールのFromには
taki@xxx.com
と、表示されます。

しかし、Fromを"taki@xxx.com"と設定した場合
実際届くメールのFromは
"taki@xxx.com"@xxx.com
と、表示されます。
""をつけるとどうやら""の中がアカウントと認識されるみたいです。
これを""があっても@xxx.comを設定せずにしたいのですが、どうすればよいのでしょうか?
ちなみにメール送信しているプログラムは以下の通りです。

sub MailSend {

 my $head= $_[0];
 my $body= $_[1];
 my $flgMime= $_[2];#エンコード判定フラグ
my $in_return = 0;
my $rc;

 #メールコマンド
 my $cmdMail= "/usr/lib/sendmail -t";

 #文字コード変換
 ##件名
 &Jcode::convert( $$head{ "SUBJECT" }, "jis" );
##本文
foreach( @{$body} ){ &Jcode::convert( $_, "jis" ) };

#ヘッダのMIMEエンコード
if( $flgMime ){
$$head{ "SUBJECT" } = MIME::mimeencode($$head{ "SUBJECT" });
}

#メール送信
$rc = open( OUTMAIL, "| $cmdMail" ) ;
if($rc) {
print OUTMAIL "From: $$head{ "FROM" }\n";
print OUTMAIL "To: $$head{ "TO" }\n";
print OUTMAIL "Cc: $$head{ "CC" }\n";
print OUTMAIL "Bcc: $$head{ "BCC" }\n";
print OUTMAIL "Subject: $$head{ "SUBJECT" }\n";
print OUTMAIL "\n";
foreach( @{$body} ){ print OUTMAIL $_."\n" };
print OUTMAIL ".\n";
close( OUTMAIL );
}
else{
$in_return = 1;
}
return $in_return;
}

A 回答 (3件)

お使いのsendmail.cfがドメイン部なしのメールアドレスfooをローカルドメイン付きfoo@xxx.comに書き換える設定になっているのだと思います。


sendmail.cfを修正してもいいですが、そもそもユーザがFromに何を入れるか予想できないのでPerlスクリプト側で入力チェックをするか、ある程度の加工をする必要があると思います。例えば、ダブルクォートを取り除くなら

$from =~ s/"//g;

です。
「RFC上正当なメールアドレス」かどうかを検査するには
RFC2822を見て、メールアドレスとして許されるパターンと照合すればいいでしょう。

参考URL:http://www.puni.net/~mimori/rfc/rfc2822.txt
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
大変参考になりました。
お客さんと話してどうするか検討します。

お礼日時:2004/09/27 12:09

#1 です。



<"taki@xxx.com">

ではありません。

<taki@xxx.com>

です。
ダブルクォーテーションは、メールアドレスではなく、名前を囲む時に利用する規則になっています。
そのため、誤動作しているのだと思います。

今、仮に、メールアドレスが $$head{"FROM"} に、名前が $$head{"FROMNAME"} に入っているとすると、

$fromstr = "";
$fromstr = "\"$$head{ "FROMNAME" }\" " if ($$head{ "FROMNAME" });
$fromstr .= "<$$head{ "FROM" }>";
print OUTMAIL "From: $fromstr\n";

例えば、この様な感じで動作すると思います。試してみて下さい。
    • good
    • 0

メールアドレスを指定するフォーマットが間違っていると思います。



メールアドレスを囲む必要がある場合には、

<taki@xxx.com>

と指定します。名前を付ける場合には、

first last <taki@xxx.com>

または、

"first last" <taki@xxx.com>

とします。または、

taki@xxx.com (first last)

でも良かった様な。。。ウル覚えであまり自信がありません。

メールアドレス部分を、この様なフォーマットとしてみて下さい。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
早速行ってみましたが、うまく動作しませんでした。

以下に補足を記述します。
FROMアドレスはユーザが自由に設定できます。
ユーザがFROMに"taki@xxx.com"と設定した場合、
システムでは、設定したアドレスをFromに設定してメール送信します。

Dpopさんから教わったように<"taki@xxx.com">と設定して
メール送信しましたが、届いたメールは<"taki@xxx.com">@xxx.comと表示されました。
何か別な手段はありませんでしょうか?
それとももともとFromアドレスに「"」を入れてはいけないのでしょうか?

お礼日時:2004/09/24 13:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!