JavaMail实现向QQ邮箱发送邮件

邮件相关的标准 

厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:

SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,用于接收电子邮件的标准协议。

IMAP(Internet Mail Access Protocol) :即 Internet 邮件访问协议。是 POP3 的替代协议。

这三种协议都有对应 SSL 加密传输的协议,分别是 SMTPS , POP3S 和 IMAPS 。

MIME(Multipurpose Internet Mail Extensions) :即多用途因特网邮件扩展标准。它不是邮件传输协议。但对传输内容的消息、附件及其它的内容定义了格式。

1.开启SMTP服务

打开QQ邮箱里的 设置----->账户下面开启SMTP两个服务,开启后,QQ邮箱会生成一个授权码,在代码

里连接邮箱需使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。

2.通过Telnet测试端口25

1.启动cmd

2.输入telnet命令,如果提示该命令不存在,按如下操作:开始--->控制面板--->程序--->开启个关闭windows

功能--->telnet客户端,如果显示220 smtp.qq.com Esmtp QQ Mail Server,220表示连接成功。

3.下载依赖的jar包

官方下载地址http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR。

解压完之后,通常我们只需要其中的mail.jar,把它加到我们java工程的依赖包中。

代码

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class JavaMailTest{
    public static void main(String[] args) throws MessagingExceptin,,GeneralSecurityException{
        Properties properties = new Properties();

        //发送服务器需要身份验证
        properties.setProperty("mail.smtp.auth","true");
        //发送端口
        properties.setProperty("mail.smtp.port","25");
        //设置邮件服务器主机名
        properties.setProperty("mail.smpt.host","smpt.qq.com");
        //设置发送邮件协议名称
        properties.setProperty("mail.transport.protocol","smtp");

        /*
         *这一段代码开启了SSL加密,要是没有跑成功,就加上这段代码。
         *MailSSLSocketFactory sf = new MailSSLSocketFactory();
         *sf.setTrustAllHosts(true);
         *properties.put("mail.smtp.ssl.enable", "true");
         *properties.put("mail.smtp.ssl.socketFactory", sf);
        */
        
        //根据配置创建会话对象,用于和邮件服务器交互
        Session session = Session.getInstance(properties);
        //创建邮件对象
        Message msg = new MimeMessage(session);
        //设置邮件标题
        msg.setSubject("javaMail测试");
        //编写邮件内容
        msg.setText("这是一封有javaMail发送的邮件");
        msg.setForm(new InternetAddress("填写发送人的邮箱地址"));
        
        Transport transport = session.getTransport();
        transport.connect("smtp.qq.com","发送人的邮箱地址","你的邮箱密码或者授权码");
        transport.sendMessage(msg,new Address[] { new InternetAddress("接收人的邮箱地址")});
        transport.close();
    }
}

 

4.更多参考文档:

http://docs.oracle.com/javaee/5/api/javax/mail/package-summary.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值