SMTP(SSL)9159.com发送邮件,下面是基于这个类里面的

作者: 编程  发布:2019-09-24

在使用contact form 7插件时遇到邮件发送失败的问题,经过检查发现是因为服务器不支持mail()函数,判断是否支持mail()函数可以参考

一,SMTP发送邮件

wp_mail() 函数用来发送邮件,类似于 PHP 的 mail() 函数。

有了phpmail这个类,你就不用愁了。这是个外国人写的一个类,我们就只管“拿来主义”了。下面是基于这个类里面的send()方法写的一个函数:

具体说解决办法:

这里PYTHON脚本实现的是登陆126的SMTP将邮件发送到QQ邮箱.
QQ邮箱利用的是加密STMP, 需要加密版本的童鞋请关注随后的更新.
TIPS: 我的本地环境是MAC系统, Windows环境需要修改相应的字符编码.

默认的发件人名称是 WordPress,发件人邮箱是类似 wordpress@example.com。
用法

复制代码 代码如下:

1.QQ邮箱要开启IMAP/SMTP服务

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib  
import email.encoders
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
import getpass
# Build a new attach instance
msg = MIMEMultipart()
# Mail configuration
Mail_subject = 'Python test mail'
Mail_content = 'Send with attachments'
Recipient_list = ['XXX@126.com', 'XXX@qq.com']
SMTP_server = "smtp.126.com"  
Username = raw_input('Please input your Username:')  
Password = getpass.getpass("Please input your Password: ")   
mail_postfix = "126.com" 
# Mail attachment
def attach(file_path, file_name, type, postfix):
    with open(file_path + "/" + file_name, 'rb') as f:
        # 设置附件的MIME和文件名,这里是png类型:
        mime = MIMEBase(type, postfix, filename = file_name)
        # 加上必要的头信息:
        mime.add_header('Content-Disposition', 'attachment', filename = file_name)
        mime.add_header('Content-ID', '<0>')
        mime.add_header('X-Attachment-Id', '0')
        # 把附件的内容读进来:
        mime.set_payload(f.read())
        # 用Base64编码:
        email.encoders.encode_base64(mime)
        # 添加到MIMEMultipart:
        msg.attach(mime)
  
def send_mail(recipient, title, content): 
    # Mail info
    author = "%s<%s@%s>" %(Username, Username, mail_postfix)
    msg['Subject'] = title  
    msg['From'] = author  
    msg['To'] = ";".join(recipient)
    # send attachment
    msg.attach(MIMEText(content, 'plain', 'utf-8'))
    attach('/Users/XXX/Pictures/com.tencent.ScreenCapture','QQ20150827-1.png', 'image', 'png')
    attach('/Users/XXX/Work/Python','test01.py', 'txt', 'py')
    attach('/Users/XXX/Work/Python','test.zip', 'zip', 'zip')
    try:  
        server = smtplib.SMTP()
        server.set_debuglevel(1) 
        server.connect(SMTP_server)  
        server.login(Username, Password)  
        server.sendmail(author, recipient, msg.as_string())  
        server.quit()  
        return True  
    except Exception, e:
        print str(e)
        return False

if __name__ == '__main__': 
    if send_mail(Recipient_list, Mail_subject, Mail_content): 
        print "Sent Successfully"  
    else: 
        print "Sent Failure"
wp_mail( $to, $subject, $message, $headers, $attachments );

function send_mail ($title,$content,$from,$to,$charset='gbk',$attachment ='')
{
include '/class/PHPMail.class.php';
header('Content-Type: text/html; charset='.$charset);
$mail = new PHPMailer();
$mail->CharSet = $charset; //设置采用gb2312中文编码
$mail->IsSMTP(); //设置采用SMTP方式发送邮件
$mail->Host = "smtp.qq.com"; //设置邮件服务器的地址
$mail->Port = 25; //设置邮件服务器的端口,默认为25
$mail->From = $from; //设置发件人的邮箱地址
$mail->FromName = ""; //设置发件人的姓名
$mail->SMTPAuth = true; //设置SMTP是否需要密码验证,true表示需要
$mail->Username = $from; //设置发送邮件的邮箱
$mail->Password = ""; //设置邮箱的密码
$mail->Subject = $title; //设置邮件的标题
$mail->AltBody = "text/html"; // optional, comment out and test
$mail->Body = $content; //设置邮件内容
$mail->IsHTML(true); //设置内容是否为html类型
$mail->WordWrap = 50; //设置每行的字符数
9159.com,$mail->AddReplyTo("地址","名字"); //设置回复的收件人的地址
$mail->AddAddress($to,"星模实训"); //设置收件的地址
if ($attachment != '') //设置附件
{
$mail->AddAttachment($attachment, $attachment);
}
if(!$mail->Send())
{
return false;
} else {
return true;
}
}

在QQ邮箱的设置里面

二,SMTP(SSL)发送邮件

参数

一般就是用QQ邮箱了,因为QQ邮箱很容易开启SMTP和POP3服务,而且免费,注意的就是邮件的内容格式和编码。
PHPMail.class.php这个类,点击下载吧!

9159.com 1

这里需要注意的是大家使用QQ邮箱(SMTL over SSL)时, 需要首先在其网页客户端后台打开SMTP/POP服务, 并且设置QQ邮箱独立密码作为SMTP登陆密码, 这样在使用MUA时就不会报Authentication failed的错误.
QQ邮箱 POP3端口: 995 SMTP端口: 587
密码使用QQ邮箱独立密码

$to

您可能感兴趣的文章:

  • iis下php mail函数的sendmail配置方法(官方推荐)
  • PHPMailer使用教程(PHPMailer发送邮件实例分析)
  • PHPMailer邮件类利用smtp.163.com发送邮件方法
  • phpmailer在服务器上不能正常发送邮件的解决办法
  • php中mail函数发送邮件失败的解决方法
  • PHP mail 通过Windows的SMTP发送邮件失败的解决方案
  • phpmailer简单发送邮件的方法(附phpmailer源码下载)
  • thinkphp使用phpmailer发送邮件的方法
  • Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
  • PHP借助phpmailer发送邮件
  • PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法

2.端口设置

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib  
import email.encoders
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
import getpass
# Build a new attach instance
msg = MIMEMultipart()
# Mail configuration
Mail_subject = 'Python test mail'
Mail_content = 'Send with pic attachment'
Recipient_list = ['XXX@126.com', 'XXX@qq.com']
SMTP_server = "smtp.qq.com"  
SMTP_port = "587"
Username = raw_input('Please input your Username:')  
Password = getpass.getpass("Please input your Password: ")   
mail_postfix = "qq.com" 
# Mail attachment
def attach(file_path, file_name, type, postfix):
    with open(file_path + "/" + file_name, 'rb') as f:
        # 设置附件的MIME和文件名,这里是png类型:
        mime = MIMEBase(type, postfix, filename = file_name)
        # 加上必要的头信息:
        mime.add_header('Content-Disposition', 'attachment', filename = file_name)
        mime.add_header('Content-ID', '<0>')
        mime.add_header('X-Attachment-Id', '0')
        # 把附件的内容读进来:
        mime.set_payload(f.read())
        # 用Base64编码:
        email.encoders.encode_base64(mime)
        # 添加到MIMEMultipart:
        msg.attach(mime)
  
def send_mail(recipient, title, content): 
    # Mail info
    author = "%s<%s@%s>" %(Username, Username, mail_postfix)
    msg['Subject'] = title  
    msg['From'] = author  
    msg['To'] = ";".join(recipient)
    # Send attachment
    msg.attach(MIMEText(content, 'plain', 'utf-8'))
    attach('/Users/XXX/Pictures/com.tencent.ScreenCapture','QQ20150827-1.png', 'image', 'png')
    attach('/Users/XXX/Work/Python','test01.py', 'txt', 'py')
    attach('/Users/XXX/Work/Python','test.zip', 'zip', 'zip')
    try:  
        server = smtplib.SMTP(SMTP_server, SMTP_port)
        server.starttls()
        server.set_debuglevel(1)   
        server.login(Username, Password)  
        server.sendmail(author, recipient, msg.as_string())  
        server.quit()  
        return True  
    except Exception, e:
        print str(e)
        return False

if __name__ == '__main__': 
    if send_mail(Recipient_list, Mail_subject, Mail_content): 
        print "Sent Successfully"  
    else: 
        print "Sent Failure"

(字符串 | 数组)(必须)收件人。多个收件人可以使用数组或者以逗号分隔邮箱的字符串。

WP Mail SMTP插件的设置中,STMP Host填stmp.qq.com,STMP Port填465

默认值:None

3.账号和密码

$subject

Username填的是QQ邮箱,密码填的不是邮箱密码,而是生成的授权码。

(字符串)(必须)邮件标题。

9159.com 2

默认值:None

最后发一下我的设置页面

$message

9159.com 3

(字符串)(必须)邮件内容。

默认值:None

$headers

(字符串 | 数组)(可选)邮件 Headers 信息。可以是数组,也可以是以回车分隔的字符串(格式:name: content)。

默认值:空字符串

$attachments

(字符串 | 数组)(可选)邮件附件。多个附件可以使用数组或者以回车分隔的字符串。

默认值:空字符串

返回值

(布尔)返回是否成功发送邮件。

例子

最基本的邮件发送:

wp_mail( 'me@example.net', 'The subject', 'The message' );

附件和 headers 信息:

$attachments = array( WP_CONTENT_DIR . '/uploads/file_to_attach.zip' );
$headers = 'From: My Name <myname@example.com>' . "rn";
wp_mail( 'test@example.org', 'subject', 'message', $headers, $attachments );

Html 邮件和一次发送多个邮箱:

$multiple_to_recipients = array(
  'recipient1@example.com',
  'recipient2@foo.example.com'
)
wp_mail( $multiple_to_recipients, 'The subject', '<p>The <em>HTML</em> message</p>', 'Content-Type: text/html' );

其它

此函数位于:wp-includes/pluggable.php

解决邮件无法发送的问题 邮件无法发送是 WordPress 比较常见的一种问题,一般是由于服务器不支持 PHP 的 mail() 函数造成的,通常有两种解决方法。

PS:WordPress 发送邮件一定要使用 wp_mail() 函数,而不是直接调用 PHP SMTP 类或者其它函数。

一、配置服务器环境

如果你使用的是 VPS,可以通过配置服务器的方式让服务器支持 mail() 函数,根据每个人的情况不同可以通过搜索引擎找到配置方法,这里就不详细说了。

二、使用 SMTP

第二种就是用 SMTP 发送邮件了,也是我比较推荐的一种方法。SMTP 就是利用其它的免费邮件服务商的服务器发送邮件,所以用这种方式还不容易被识别成垃圾邮件。

好了,让 WordPress 支持 SMTP 推荐的是使用 WP SMTP 插件,安装好后在后台配置一下你的 SMTP 信息,我使用的是 QQ 邮箱。

9159.com 4

配置好后可以在下边测试一下是否配置成功。

插件主页:

您可能感兴趣的文章:

  • WordPress中获取页面链接和标题的相关PHP函数用法解析
  • WordPress中用于检索模版的相关PHP函数使用解析
  • 修改WordPress中文章编辑器的样式的方法详解
  • WordPress中用于获取文章作者与分类信息的方法整理

本文由9159.com发布于编程,转载请注明出处:SMTP(SSL)9159.com发送邮件,下面是基于这个类里面的

关键词:

上一篇:没有了
下一篇:没有了