Php/pear/mail
提供: 初心者エンジニアの簡易メモ
目次
インストール
pear install Mail pear install Mail_Mime pear install NET_SMTP
Mailインストール時に'Cannot retrieve channel.xml for channel "pear.php.net" (could not open /var/tmp/channel.xml for writing)'エラが出たとき
sudoつけてインストール
だめなら・・
sudo pear clear-cache sudo pear update-channels sudo pear upgrade
NET_SMTPインストール時に'Parsing of package.xml from file "/var/tmp/pearJTUbtI/package.xml" failed'エラが出たとき
pear install Console_GetoptPlus-1.0.0RC1 pear upgrade --force Console_Getopt pear upgrade --force PEAR-1.10.1 pear upgrade --force PEAR pear list
Yahooメールでメール送信する場合のサンプル
require_once('Mail.php');
require_once('Mail/mime.php');
$from = 'example1@yahoo.co.jp';
$params = array(
'host' => 'smtp.mail.yahoo.co.jp',
'port' => 587, // No SLL
// 'port' => 465, // SSL
'auth' => true,
'username' => 'example1',
'password' => 'password1',
);
if ($this->_from) {
$from = $this->_from;
}
if (count($this->_params)) {
$params = $this->_params;
}
// shift-jis => JIS
$original = mb_internal_encoding();
$subject = mb_convert_encoding( $subject, "ISO-2022-JP", "shift_jis");
mb_internal_encoding( "ISO-2022-JP" );
$subject = mb_encode_mimeheader( $subject, "ISO-2022-JP");
mb_internal_encoding( $original );
$crlf = "\n";
$hdrs = array(
'From' => $from,
'cc' => $from,
'to' => $to,
'Subject' => $subject,
);
$mime = & new Mail_mime($crlf);
if (preg_match("/<html>/", $text)) {
$mime->setHTMLBody($text);
} else {
$text = mb_convert_encoding( $text, "ISO-2022-JP", $code);
$mime->setTXTBody($text);
}
$build_param = array(
"html_charset" => $code,
"text_charset" => "ISO-2022-JP",
"head_charset" => "ISO-2022-JP",
);
$body = $mime->get( $build_param );
$hdrs = $mime->headers($hdrs);
$address = array($to, $from);
$mail =& Mail::factory('smtp', $params);
$result = $mail->send($address, $hdrs, $body);
Yahooメールで以下エラー
authentication failure [SMTP: Invalid response code received from server (code: 535, response: authorization failed (#5.7.0))]
6ヶ月以上使ってないとメールアカウントが削除されるので削除されてないか確認する。
Gmailでメールを送信
アプリ認証でパスワードを生成する(https://security.google.com/settings/security/apppasswords)
$params = array(
'host' => 'smtp.gmail.com',
'port' => 587,
'auth' => true,
'username' => 'hogehoge@gmail.com',
'password' => 'hogehogehogehoge',
);
関連:Php/laravel/laravel5/mail [ショートカット]
