javamail发送邮件

使用javamail发送邮件

在之前的学习中,有需要用到java来发送邮件,通过在网上查找资料,之前实现过一版可以给自己发送邮件但是不能给他人发的代码。今天又折腾了一天,总算解决了。

1.首先不管你设置的发送邮箱是哪一种,第一步都需要开启POP3/SMTP服务,qq邮箱设置位置在设置->账户,再在如下图内容出开启,然后要花一毛钱发条短信生成授权码,记着就行。


网易开启服务的过程也差不多,不过不要钱,授权码还可以自定!

2. 然后我们要在网上下载javamail相关的jar包,导入到所创的项目里。所用的包如下:
javax.activation.jar
common-email-1.2.jar
java-mail-1.4.4.jar
由于这些包是之前导入的,我也懒得去找,就不放上链接了,网上都有资源。

3. 先附上正确代码,然后我再讲那些我遇到的坑。
public class send_email {
	
	public static String Emailaccout="";  //发送邮箱
	public static String Emailpassword="";  授权码
	public static String myEmailSMTPHost = "smtp.qq.com";
	
	public static void send_mail(String receiveMailAccount) throws Exception {
        //创建参数配置, 用于连接邮件服务器的参数配置
        Properties props = new Properties();                    // 参数配置
        props.put("mail.smtp.host", "host");
        props.put("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        props.put("mail.host", myEmailSMTPHost);        // 发件人的邮箱的 SMTP 服务器地址
        props.put("mail.smtp.auth", "true");            // 请求认证,参数名称与具体实现有关
        
        //创建ssl安全连接
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.ssl.socketFactory", sf);
        //根据配置创建会话对象, 用于和邮件服务器交互

        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);                                 // 设置为debug模式, 可以查看详细的发送 log

        //创建一封邮件
        MimeMessage message = createMimeMessage(session,Emailaccout, receiveMailAccount);

        // 根据 Session 获取邮件传输对象
        Transport transport = session.getTransport();

        //使用 邮箱账号 和 密码 连接邮件服务器
        transport.connect(myEmailSMTPHost,Emailaccout,Emailpassword);
        System.out.println("16"+message.getAllRecipients()+"eeee");
        //发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送
	人, 密送人
        try{
        transport.sendMessage(message, message.getAllRecipients());
        }catch(MessagingException ex){
        	ex.printStackTrace();
        }
        transport.close();
    }

    public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {

        MimeMessage message = new MimeMessage(session);

        message.setFrom(new InternetAddress(sendMail));
        //收件人可以为多个
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail));
        
        message.setSubject("欢迎蛤蛤","UTF-8");
        message.addHeader("Disposition-Notification-To","1");
        //message.setText("这是一封自己写程序发的邮件,如果你收到了,请不要回复!无意冒犯!");
        Multipart mainPart = new MimeMultipart();
        BodyPart html = new MimeBodyPart();
        html.setContent("这个世界啊,还是亦可赛艇啊!", "text/html; charset=utf-8");
        mainPart.addBodyPart(html);
        message.setContent(mainPart);
        message.setSentDate(new Date());
        message.saveChanges();

        return message;
    }
    
    public static void main(String[] args) throws Exception{
    	send_mail("接受邮箱"); //可以使多个
    }
}
中间发送的邮件内容由于懒,就随便写了点,格式排版什么的,自己设定就好。
在下面的一篇博客里,详细讲解了在使用javamail过程中遇到的那些坑,如果还没有解决发送邮件的问题,可以看一下哦。传送门:javamail使用时遇到的那些坑


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值