javamail发送邮件

来源:互联网 发布:网络上的uv是什么意思 编辑:程序博客网 时间:2024/06/09 14:54

使用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
原创粉丝点击