PHP
February 04, 2013
PEAR :: Mail 設定のメモ
CakePHPで、画像をメール添付したかったため、PEAR::Mailを使う際に調べたメモ。
require_once("Mail.php");
require_once("Mail/mime.php");
$header['From'] = "info@example.net";
$header['To'] = "hogehoge@hogehoge.net";
$header['Bcc'] = "hoge_bcc@hogehoge.net";
$header['Subject'] = mb_encode_mimeheader('メールの件名ですよ~メールの件名ですよ~', 'JIS', 'B', "\r\n" , 9 );
$html_param['head_charset'] = "ISO-2022-JP";
$html_param['html_encoding'] = "ISO-2022-JP";
$html_param['html_charset'] = "UTF-8";
$recipients = array("hogehoge@hogehoge.net","hoge_bcc@hogehoge.net");
$html = "メールの本文";
$mime = new Mail_mime();
$mime->addHTMLImage(添付する画像の場所, 画像タイプ);
$mime->setHTMLBody($html);
$body = $mime->get($html_param);
$header = $mime->headers($header);
$mail = Mail::factory("smtp", array('host' => 'localhost'));
if($mail->send($recipients, $header, $body)){
$this->log('メール送信成功しました');
}else{
$this->log('メール送信失敗しました');
}
【ポイントその1】 画像を添付する場合、mb_send_mailが使えない(無理やり使う方法はあるけど)。
そのため、PEARのMailパッケージを使用。 画像タイプには、"image/jpeg"や"image/gif"等、送信する画像に見合ったものを指定。
【ポイントその2】 件名が長いとThunderbirdで途中(32バイト以上)から文字化けする。
これはThunderbirdが厳密なため? そのため一旦Subject迄で一行とし、その後を一行とみなすように変更。
対症療法的なのであまり推奨はしない。。もっと何かいい方法があれば
【ポイントその3】 Bcc、もしくはCcを設定したい場合、 $headers['Bcc']とか$headers['Cc']だけではheaderに書かれるだけで、 実際にはメールは送信されない。
「$recipients」配列に入れることで正常に送信されることを確認。
require_once("Mail.php");
require_once("Mail/mime.php");
$header['From'] = "info@example.net";
$header['To'] = "hogehoge@hogehoge.net";
$header['Bcc'] = "hoge_bcc@hogehoge.net";
$header['Subject'] = mb_encode_mimeheader('メールの件名ですよ~メールの件名ですよ~', 'JIS', 'B', "\r\n" , 9 );
$html_param['head_charset'] = "ISO-2022-JP";
$html_param['html_encoding'] = "ISO-2022-JP";
$html_param['html_charset'] = "UTF-8";
$recipients = array("hogehoge@hogehoge.net","hoge_bcc@hogehoge.net");
$html = "メールの本文";
$mime = new Mail_mime();
$mime->addHTMLImage(添付する画像の場所, 画像タイプ);
$mime->setHTMLBody($html);
$body = $mime->get($html_param);
$header = $mime->headers($header);
$mail = Mail::factory("smtp", array('host' => 'localhost'));
if($mail->send($recipients, $header, $body)){
$this->log('メール送信成功しました');
}else{
$this->log('メール送信失敗しました');
}
【ポイントその1】 画像を添付する場合、mb_send_mailが使えない(無理やり使う方法はあるけど)。
そのため、PEARのMailパッケージを使用。 画像タイプには、"image/jpeg"や"image/gif"等、送信する画像に見合ったものを指定。
【ポイントその2】 件名が長いとThunderbirdで途中(32バイト以上)から文字化けする。
これはThunderbirdが厳密なため? そのため一旦Subject迄で一行とし、その後を一行とみなすように変更。
対症療法的なのであまり推奨はしない。。もっと何かいい方法があれば
【ポイントその3】 Bcc、もしくはCcを設定したい場合、 $headers['Bcc']とか$headers['Cc']だけではheaderに書かれるだけで、 実際にはメールは送信されない。
「$recipients」配列に入れることで正常に送信されることを確認。