如果你空间不支持正常邮件发送功能的(小猫的空间就是如此),需要使用smtp发送评论邮件的话,那么你就可以继续看下文的教程了。
首先,下载smtpPHP工具,把里面的PHPMailer文件夹丢在你的主题目录里面。
然后再你 functions.php 文件里面加以下代码即可,记得修改对应的邮件参数即可,强烈建议使用163邮箱,因为我用163发smtp那么久没出过什么错,需要的地方我都有注释的:
/**
* WordPress 使用 smtp 发送评论提醒邮件
* https://www.wpdaxue.com/wordpress-comment-mail-notify-smtp.html
*/
function comment_mail_notify_editFromClmao($comment_id) {
$comment = get_comment($comment_id);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '您在 [' . get_option("blogname") . '] 的留言有了回应';
$message = '
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px; border-radius:5px;">
<p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
<p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />'
. trim(get_comment($parent_id)->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 给您的回应:<br />'
. trim($comment->comment_content) . '<br /></p>
<p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看完整的回应内容</a></p>
<p>欢迎再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>(此邮件由系统发出, 请勿回复.)</p>
</div>';
header("content-type:text/html;charset=utf-8");
ini_set("magic_quotes_runtime",0);
require get_template_directory().'/PHPMailer/class.phpmailer.php';
try {
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->CharSet='UTF-8';
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Host = "smtp.163.com";//邮箱smtp地址,此处以163为例
$mail->Username = "你的邮箱账号";//你的邮箱账号
$mail->Password = "你的邮箱密码";//你的邮箱密码
$mail->From = "你的邮箱账号";//你的邮箱账号
$mail->FromName = get_option('blogname');
$to = $to;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->WordWrap = 80;
//$mail->AddAttachment("f:/test.png"); //可以添加附件
$mail->IsHTML(true);
$mail->Send();
} catch (phpmailerException $e) {
// echo "邮件发送失败:".$e->errorMessage(); //测试的时候可以去掉此行的注释
}
}
}
add_action('comment_post', 'comment_mail_notify_editFromClmao');
效果图:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
QQ邮箱是不是只需要改服务器地址和端口就好了?为什么我不能用啊……博主求教 😥
研究半天了,,我是万网的空间
万网给了一个代码不知道怎么用到网站里
<?
echo send_mail('xxxx@qq.com','发信测试','测试测试测试测试测试测试');
function send_mail($to, $subject = 'No subject', $body) {
$loc_host = "test"; //发信计算机名,可随意
$smtp_acc = "xxx@163.com"; //Smtp认证的用户名,类似fuweng@im286.com,或者fuweng
$smtp_pass="xxx"; //Smtp认证的密码,一般等同pop3密码
$smtp_host="smtp.163.com"; //SMTP服务器地址,类似 smtp.tom.com
$from="xxx@163.com"; //发信人Email地址,你的发信信箱地址
$headers = "Content-Type: text/plain; charset=\"gb2312\"\r\nContent-Transfer-Encoding: base64";
$lb="\r\n"; //linebreak
$hdr = explode($lb,$headers); //解析后的hdr
if($body) {$bdy = preg_replace("/^\./","..",explode($lb,$body));}//解析后的Body
$smtp = array(
//1、EHLO,期待返回220或者250
array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),
//2、发送Auth Login,期待返回334
array("AUTH LOGIN".$lb,"334","AUTH error:"),
//3、发送经过Base64编码的用户名,期待返回334
array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),
//4、发送经过Base64编码的密码,期待返回235
array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : "));
//5、发送Mail From,期待返回250
$smtp[] = array("MAIL FROM: “.$lb,”250”,”MAIL FROM error: “);
//6、发送Rcpt To。期待返回250
$smtp[] = array(“RCPT TO: “.$lb,”250”,”RCPT TO error: “);
//7、发送DATA,期待返回354
$smtp[] = array(“DATA”.$lb,”354″,”DATA error: “);
//8.0、发送From
$smtp[] = array(“From: “.$from.$lb,””,””);
//8.2、发送To
$smtp[] = array(“To: “.$to.$lb,””,””);
//8.1、发送标题
$smtp[] = array(“Subject: “.$subject.$lb,””,””);
//8.3、发送其他Header内容
foreach($hdr as $h) {$smtp[] = array($h.$lb,””,””);}
//8.4、发送一个空行,结束Header发送
$smtp[] = array($lb,””,””);
//8.5、发送信件主体
if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,””,””);
//9、发送“.”表示信件结束,期待返回250
$smtp[] = array(“.”.$lb,”250″,”DATA(end)error: “);
//10、发送Quit,退出,期待返回221
$smtp[] = array(“QUIT”.$lb,”221″,”QUIT error: “);
//打开smtp服务器端口
$fp = @fsockopen($smtp_host, 25);
if (!$fp) echo “Error: Cannot conect to “.$smtp_host.”
“;
while($result = @fgets($fp, 1024)){if(substr($result,3,1) == ” “) { break;
$result_str=””;
//发送smtp数组中的命令/数据
foreach($smtp as $req){
//发送信息
@fputs($fp, $req[0]);
//如果需要接收服务器返回信息,则
if($req[1]){
//接收信息
while($result = @fgets($fp, 1024)){
if(substr($result,3,1) == ” “) { break; }
};
if (!strstr($req[1],substr($result,0,3))){
$result_str.=$req[2].$result.”
“;
}
}
}
//关闭连接
@fclose($fp);
return $result_str;
}
?>
我按照你的设置做了一遍,还是不发送邮件。
为什么我用的xiu主题,加入代码后,整个网站都无法打开
wordpress自带phpmyadmin钩子
add_action(‘phpmailer_init’, ‘mail_smtp’);
来自 乱炖 – 研究web http://levi.cg.am
我想问下:PHPMailer 这是干嘛的?为什么我似乎没有这些文件,也能发呢?
这个不错