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

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

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

関連記事

PHPの配列でキーを再採番する方法 PHPの配列で歯抜けになったキーを再採番する方法 PHPでarray_uniqueなどの配列用関数を使うと、配列のキー(添字、要素名)が、連想配列でなく数値の場合、バラバラになる(連番にならない)ことがある。 これを、ちゃんと連番にしたい。いい方法はないか。 結論 sortをかます。...
PHPでComet:フォーカスの当たっていないウィンドウが更新されない... PHPとprototype.jsを使ってAjaxでCometなチャットを作ろうとした。 FireFoxで動作検証していたのだが、ブラウザの複数ウィンドウを立ち上げ、別マシンでもウィンドウを立ち上げて検証していたところ、フォーカスの当たっていない(アクティブでない)ウィンドウでは、TextAre...
xrea.comサーバにPEARをインストールする方法... Monoar / Pixabay CGIモードでgo-pear.phpを実行 xrea.comで、PEARのWEBインストーラーであるgo-pear.phpを使ってインストールしたかったのですが、何度試してもtempフォルダの権限が変わってしまい、エラーになってしまいます。 結論...
Geeklogの管理画面で記事一覧に列を追加する... Geeklogで記事一覧に任意の列を追加する方法 わたくし、Geeklogの記事管理画面(story.php)で記事一覧を表示する際に、編集アイコン列の隣に新しい列を挿入したかったんです。 結論 story.phpで列の定義を行い、lib-admin.phpで各行の処理を定義する。 ...

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告