PHPMailer+Gmailで送信者のアドレスが変わらない

この記事は次のブログに引っ越しました。

PHPMailerを使いGmail経由でメールを送る際にアカウントのメールアドレスでなく任意のメアドにしたい 自社ドメインGoogleAppsを使ってメールサービスを利用している場合、自社のWEBサービスからのメール送信にもGMailを使いたい事があると思います。 その場合、PHPMailerを使うのが定番ですが、Classの"setFrom"や"addReplyTo"に設定したメールアドレスで送られず、送信時にログインしたメールアドレスで送られてしまう場合に参考にしてください。 「登録完了のお知らせ」など、基本的に返信を受け付けない自動送信用のメールアドレス(例えば"noreply@mydomain.com"など)で送りたいのに、相手に届いたメールを見るとログイン時の"yourname@mydomain.com"で送られてしまう場合、予めGMail設定で自動送信用のメールアドレスを追加・認証しておく必要があります。 しかし、残念ながらメールヘッダの"sender"の内容は(送信者のメールアドレスのままで)変更できません。"sender"のヘッダ内容も変えるには"@mydomain.com"のドメイン内に自動送信用のアカウントを作る必要がありますが、アカウント毎の課金が増えたり、管理するアカウントが増えたりといったデメリットがあります。 GMail側(メール送信時に利用するアカウント)の設定 [設定]-[アカウント]-[メールアドレスを追加]で、自動送信用のメアドを登録する。(例 noreply@mydomain.com) この時に「エイリアスとして扱います」のチェックを外し、返信先にも同じメールアドレスを念のために入れておきます。 PHP側(PHPMailer)の設定(サンプル) <?php date_default_timezone_set('Asia/Tokyo'); require './PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->SMTPDebug = 2; /* Show client and server message */ $mail->CharSet = 'UTF-8'; $mail->Encoding = 'base64'; $mail->setLanguage('ja'); $mail->Debugoutput = 'html'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = "admin@mydomain.com"; $mail->Password = "mypassw0rd"; $mail->XMailer = "PHPMailer"; $mail->setFrom('noreply@mydomain.com'); $mail->addReplyTo('noreply@mydomain.com'); $mail->addAddress('user1@otherdomain.com'); $mail->addAddress('user2@otherdomain.com'); $mail->ContentType = "text/plain"; $mail->Subject = '表示テスト'; $mail->Body = <<< EOF こんにちは。これはメールの表示機能のテストです。無視してください。 以上 EOF; //send the message, check for errors if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } 参考文献: http://stackoverflow.com/questions/10566200/phpmailer-gmail-from-is-gmail-account