javamail发送邮件
2016-12-04 01:09
211 查看
使用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使用时遇到的那些坑
相关文章推荐
- Web应用中使用JavaMail发送邮件
- 用Java类实现JavaMail发送邮件的例子
- JavaMail发送邮件
- javamail发送邮件
- 使用javamail发送邮件
- JavaMail发送和接收邮件(转载)
- javamail设置SSL发送邮件
- 基于JavaMail的Java邮件发送:简单邮件发送
- Java Web(十三) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)
- JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件
- JavaMail 发送邮件,以及sina、163、QQ服务器不同的解析结果(附图)
- JavaMail发送邮件
- Android之使用JavaMail发送邮件
- Spring Boot中使用JavaMailSender发送邮件
- javaMail发送邮件(文本)
- [转]JavaMail的使用之邮件发送 详解
- JAVA与JavaMail邮件发送
- javamail邮件发送,带附件发送
- JavaMail发送邮件和附件(源码)
- JavaMail邮件发送