博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程处理邮件
阅读量:6713 次
发布时间:2019-06-25

本文共 5018 字,大约阅读时间需要 16 分钟。

一、常用邮箱的SMTP端口号

gmail(google.com)

POP3服务器地址:pop.gmail.com(SSL启用 端口:995)
SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)

21cn.com:

POP3服务器地址:pop.21cn.com(端口:110)
SMTP服务器地址:smtp.21cn.com(端口:25)

sina.com:

POP3服务器地址:pop3.sina.com.cn(端口:110)
SMTP服务器地址:smtp.sina.com.cn(端口:25)

163.com:

POP3服务器地址:pop.163.com(端口:110)
SMTP服务器地址:smtp.163.com(端口:25)

yahoo.com:

POP3服务器地址:pop.mail.yahoo.com
SMTP服务器地址:smtp.mail.yahoo.com

yahoo.com.cn:

POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)
SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)

sohu.com:

POP3服务器地址:pop3.sohu.com(端口:110)
SMTP服务器地址:smtp.sohu.com(端口:25)

Foxmail:

POP3服务器地址:POP.foxmail.com(端口:110)
SMTP服务器地址:SMTP.foxmail.com(端口:25)

通过以上邮箱,基本上可以找到如下规律:

  • SMTP服务或者25端口,或者587端口
  • POP3服务基本是110端口或者995端口
  • 主机地址基本上就是xxxxx@host.com中的host

关于邮箱,需要知道两个网络协议:SMTP网络协议和POP协议,SMTP是用来发送邮件服务器,POP是读取邮件服务器。

二、使用Java实现邮件发送

需要用到javax.mail怎么下载呢?百度javax.mail就会看见http://www.oracle.com/technetwork/java/index-138643.html实际上这个项目是www.java.net网站上面的项目。

下面的用javax.mail从163邮箱向qq邮箱发送邮件。

import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.util.Properties;public class Haha {    public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle,            String mailContent) throws Exception {        Properties props = new Properties(); // 可以加载一个配置文件        props.put("mail.smtp.host", "smtp.163.com");        Session session = Session.getInstance(props);// 根据属性新建一个邮件会话        session.setDebug(true); // 有他会打印一些调试信息。        MimeMessage message = new MimeMessage(session);// 由邮件会话新建一个消息对象        message.setFrom(new InternetAddress(fromMail));// 设置发件人的地址        message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));        message.setSubject(mailTitle);// 设置标题        //message.setText(mailContent); // 发送 纯文本 邮件        message.setContent(mailContent, "text/html;charset=gbk"); // 发送HTML邮件,内容样式比较丰富        message.setSentDate(new Date());// 设置发信时间        message.saveChanges();// 存储邮件信息        Transport transport = session.getTransport("smtp");        transport.connect(user, password);        transport.sendMessage(message, message.getAllRecipients());// 发送邮件,其中第二个参数是所有已设好的收件人地址        transport.close();    }    public static void main(String[] args) throws Exception {        sendMail("xxxxx@163.com", "xxxxxxx@163.com", "网易邮箱密码", "收件人邮箱@qq.com", "Java Mail 测试邮件",                "html 元素邮件内容");    }}

Apache对javax.mail进行了一下封装,叫org.apache.commons.mail

import org.apache.commons.mail.EmailException;import org.apache.commons.mail.HtmlEmail;public class Main {    public static void main(String[] args) {        new Main();    }    Main() {        try {            HtmlEmail email = new HtmlEmail();            email.setHostName("smtp.qq.com");            email.setSmtpPort(587);            email.setAuthentication("xxxxx@qq.com", "激活smtp功能后的验证码");            email.addTo("xxxxx@qq.com");            email.setFrom("xxxxx@qq.com");            email.setMsg("鹏哥,咱们是整着玩的,别老是想着一鸣惊人。");            email.send();        } catch (EmailException e) {            e.printStackTrace();        }    }}

三、使用Python发送邮件

import smtplibfrom email.mime.text import MIMETextserver = smtplib.SMTP("smtp.163.com")server.login("18304049305@163.com", "xxxxxx")message = MIMEText("weidiao is great")message["Subject"] = "haha"message["from"] = "xxxxx.com"message["to"] = "xxxx@qq.com"server.sendmail("18304049305@163.com", ["1661686074@qq.com"], message.as_string())server.quit()

四、发送邮件注意事项

1、163邮箱

发邮件需要让服务器发邮件,如果是163邮箱,直接弄就行。163邮箱

2、qq邮箱

如果是通过qq邮箱发邮件,就要进行一些设置。一运行,qq邮箱会告诉你去一个链接学习一下:http://service.mail.qq.com/cgi-bin/help?id=28

上面这个链接详细解释了所有内容,可以顺便学学一些协议。

需要激活qq邮箱的smtp功能(在qq邮箱中进行账户设置),并且端口也很重要,发送端口和接收端口不是一回事,详见http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369

3、gmail邮箱

使用Gmail需要给不同的的应用设置不同的密码,也就是应用的专有密码

https://support.google.com/accounts/answer/185833

五、使用telnet登录SMTP服务器发送邮件

telnet smtp.buaa.edu.cn 25  220 buaa.edu.cn Anti-spam GT for Coremail System (buaa[20140724])  helo localhost  250 OK  auth login  334 dXNlcm5hbWU6  ZGluZbaseb4email  334 UGFzc3dvcmQ6  Zbase64password  235 Authentication successful  mail from:
250 Mail OK rcpt to:
250 Mail OK data 354 End data with
.
from:
to:
subject:hello,dingsai88@qq.com hello smtp . 250 Mail OK queued as AQAQrABnbdGqjxlXSNvqAA--.7207S2

命令解析

telnetsmtp.buaa.edu.cn 25   --填写smtp地址和端口220 buaa.edu.cn Anti-spam GT for CoremailSystem (buaa[20140724])helo localhost250 OKauthlogin334 dXNlcm5hbWU6ZGluZbaseb4email  --发件箱的base64334 UGFzc3dvcmQ6Zbase64password --发件箱密码base64235 Authentication successfulmailfrom:
--发件箱地址250 Mail OKrcptto:
--收件箱地址 可多次添加250 Mail OKdata --开始添加正文354 End data with
.
from:
to:
subject:hello,dingsai88@qq.com --空一行填写hellosmtp. --最后一行以.结束250 Mail OK queued asAQAQrABnbdGqjxlXSNvqAA--.7207S2"."是结束

转载地址:http://twelo.baihongyu.com/

你可能感兴趣的文章
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
SEO实践:SEO友好的URL结构
查看>>
洛谷P1613 跑路
查看>>
无论所有题,一定要先分析清楚,所有eade case和逻辑都满足后,再动笔
查看>>
softlayer
查看>>
python各种模块,迭代器,生成器
查看>>
CSS颜色
查看>>
Lunar Lander 月球冒险
查看>>
复习日记-xml/tomcat/response/request
查看>>
Java 关键字final的一小结
查看>>
tp5的include 标签 不能用了么
查看>>
php禁止某ip或ip地址段访问的方法(转载)
查看>>
超级菜鸟的Python之路--前传一
查看>>
设置input框文字垂直居中和宽度
查看>>
WinForm笔记
查看>>
js 获取时间不能大于当前系统时间
查看>>
vue公共
查看>>
LeetCode 191. Number of 1 Bits Question
查看>>
关于前端的大致简介!
查看>>