transport java_Transport.send()执行不下去了 java mail

我在网上找了一段关于java代码用于发送email。发送信息采集代码MailSenderInfomailInfo=newMailSenderInfo();mailInfo.setMailServerHost("smtp.qq.com");mailInfo.setMailServerPort...

我在网上找了一段关于java代码用于发送email。

发送信息采集代码 MailSenderInfo mailInfo = new MailSenderInfo(); mailInfo.setMailServerHost("smtp.qq.com"); mailInfo.setMailServerPort("465"); mailInfo.setValidate(true); mailInfo.setUserName("aaa@qq.com"); mailInfo.setPassword("****");//您的邮箱密码 mailInfo.setFromAddress("aaa@qq.com"); mailInfo.setToAddress("bbb@qq.com"); mailInfo.setSubject("设置邮箱标题"); mailInfo.setContent("设置邮箱内容"); SimpleMailSender sms = new SimpleMailSender(); sms.sendTextMail(mailInfo);

邮件发送代码:

public boolean sendTextMail(MailSenderInfo mailInfo) { Properties pro = mailInfo.getProperties(); if (mailInfo.isValidate()) {

MyAuthenticator authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } Session sendMailSession = Session.getDefaultInstance(pro,authenticator); try { Message mailMessage = new MimeMessage(sendMailSession); Address from = new InternetAddress(mailInfo.getFromAddress()); mailMessage.setFrom(from); Address to = new InternetAddress(mailInfo.getToAddress()); mailMessage.setRecipient(Message.RecipientType.TO,to); mailMessage.setSubject(mailInfo.getSubject()); mailMessage.setSentDate(new Date()); String mailContent = mailInfo.getContent(); mailMessage.setText(mailContent); mailMessage.saveChanges(); System.out.println("mail save sucess"); Transport.send(mailMessage); }

运行代码时,一直卡在Transport.send(mailMessage);eclipse的consle什么也没有,空的,termiante一直是红色,邮件发送失败。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用于Java的邮件发送的一个类方法 Java邮件发送类 这是第一部分第一个类:MailSenderInfo.java 1. package com.util.mail; 2. /** 3. * 发送邮件需要使用的基本信息 4. */ 5. import java.util.Properties; 6. public class MailSenderInfo { 7. // 发送邮件的服务器的IP和端口 8. private String mailServerHost; 9. private String mailServerPort = "25"; 10. // 邮件发送者的地址 11. private String fromAddress; 12. // 邮件接收者的地址 13. private String toAddress; 14. // 登陆邮件发送服务器的用户名和密码 15. private String userName; 16. private String password; 17. // 是否需要身份验证 18. private boolean validate = false; 19. // 邮件主题 20. private String subject; 21. // 邮件的文本内容 22. private String content; 23. // 邮件附件的文件名 24. private String[] attachFileNames; 25. /** 26. * 获得邮件会话属性 27. */ 28. public Properties getProperties(){ 29. Properties p = new Properties(); 30. p.put("mail.smtp.host", this.mailServerHost); 31. p.put("mail.smtp.port", this.mailServerPort); 32. p.put("mail.smtp.auth", validate ? "true" : "false"); 33. return p; 34. } 35. public String getMailServerHost() { 36. return mailServerHost; 37. } 38. public void setMailServerHost(String mailServerHost) { 39. this.mailServerHost = mailServerHost; 40. } 41. public String getMailServerPort() { 42. return mailServerPort; 43. } 44. public void setMailServerPort(String mailServerPort) { 45. this.mailServerPort = mailServerPort; 46. } 47. public boolean isValidate() { 48. return validate; 49. } 50. public void setValidate(boolean validate) { 51. this.validate = validate; 52. } 53. public String[] getAttachFileNames() { 54. return attachFileNames; 55. } 56. public void setAttachFileNames(String[] fileNames) { 57. this.attachFileNames = fileNames; 58. } 59. public String getFromAddress() { 60. return fromAddress; 61. } 62. public void setFromAddress(String fromAddress) { 63. this.fromAddress = fromAddress; 64. } 65. public String getPassword() { 66. return password; 67. } 68. public void setPassword(String password) { 69. this.password = password; 70. } 71. public String getToAddress() { 72. return toAddress; 73. } 74. public void setToAddress(String toAddress) { 75. this.toAddress = toAddress; 76. } 77. public String getUserName() { 78. return userName; 79. } 80. public void setUserName(String userName) { 81. this.userName = userName; 82. } 83. public String getSubject() { 84. return subject; 85. } 86. public void setSubject(String subject) { 87. this.subject = subject; 88. } 89. public String getContent() { 90. return content; 91. } 92. public void setContent(String textContent) { 93. this.content = textContent; 94. } 95. } 第二部分第二个类:SimpleMailSender.java Java代码 1. package com.util.mail; 2. 3. import java.util.Date; 4. import java.util.Properties; 5. import javax.mail.Address; 6. import javax.mail.BodyPart; 7. import javax.mail.Message; 8. import javax.mail.MessagingException; 9. import javax.mail.Multipart; 10. import javax.mail.Session; 11. import javax.mail.Transport; 12. import javax.mail.internet.InternetAddress; 13. import javax.mail.internet.MimeBodyPart; 14. import javax.mail.internet.MimeMessage; 15. import javax.mail.internet.MimeMultipart; 16. 17. /** 18. * 简单邮件(不带附件的邮件)发送器 19. */ 20. public class SimpleMailSender { 21. /** 22. * 以文本格式发送邮件 23. * @param mailInfo 待发送的邮件的信息 24. */ 25. public boolean sendTextMail(MailSenderInfo mailInfo) { 26. // 判断是否需要身份认证 27. MyAuthenticator authenticator = null; 28. Properties pro = mailInfo.getProperties(); 29. if (mailInfo.isValidate()) { 30. // 如果需要身份认证,则创建一个密码验证器 31. authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 32. } 33. // 根据邮件会话属性和密码验证器构造一个发送邮件的session 34. Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 35. try { 36. // 根据session创建一个邮件消息 37. Message mailMessage = new MimeMessage(sendMailSession); 38. // 创建邮件发送者地址 39. Address from = new InternetAddress(mailInfo.getFromAddress()); 40. // 设置邮件消息的发送者 41. mailMessage.setFrom(from); 42. // 创建邮件的接收者地址,并设置到邮件消息中 43. Address to = new InternetAddress(mailInfo.getToAddress()); 44. mailMessage.setRecipient(Message.RecipientType.TO,to); 45. // 设置邮件消息的主题 46. mailMessage.setSubject(mailInfo.getSubject()); 47. // 设置邮件消息发送的时间 48. mailMessage.setSentDate(new Date()); 49. // 设置邮件消息的主要内容 50. String mailContent = mailInfo.getContent(); 51. mailMessage.setText(mailContent); 52. // 发送邮件 53. Transport.send(mailMessage); 54. return true; 55. } catch (MessagingException ex) { 56. ex.printStackTrace(); 57. } 58. return false; 59. } 60. 61. /** 62. * 以HTML格式发送邮件 63. * @param mailInfo 待发送的邮件信息 64. */ 65. public static boolean sendHtmlMail(MailSenderInfo mailInfo){ 66. // 判断是否需要身份认证 67. MyAuthenticator authenticator = null; 68. Properties pro = mailInfo.getProperties(); 69. //如果需要身份认证,则创建一个密码验证器 70. if (mailInfo.isValidate()) { 71. authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 72. } 73. // 根据邮件会话属性和密码验证器构造一个发送邮件的session 74. Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 75. try { 76. // 根据session创建一个邮件消息 77. Message mailMessage = new MimeMessage(sendMailSession); 78. // 创建邮件发送者地址 79. Address from = new InternetAddress(mailInfo.getFromAddress()); 80. // 设置邮件消息的发送者 81. mailMessage.setFrom(from); 82. // 创建邮件的接收者地址,并设置到邮件消息中 83. Address to = new InternetAddress(mailInfo.getToAddress()); 84. // Message.RecipientType.TO属性表示接收者的类型为TO 85. mailMessage.setRecipient(Message.RecipientType.TO,to); 86. // 设置邮件消息的主题 87. mailMessage.setSubject(mailInfo.getSubject()); 88. // 设置邮件消息发送的时间 89. mailMessage.setSentDate(new Date()); 90. // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 91. Multipart mainPart = new MimeMultipart(); 92. // 创建一个包含HTML内容的MimeBodyPart 93. BodyPart html = new MimeBodyPart(); 94. // 设置HTML内容 95. html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); 96. mainPart.addBodyPart(html); 97. // 将MiniMultipart对象设置为邮件内容 98. mailMessage.setContent(mainPart); 99. // 发送邮件 100. Transport.send(mailMessage); 101. return true; 102. } catch (MessagingException ex) { 103. ex.printStackTrace(); 104. } 105. return false; 106. } 107. } 第三个类:MyAuthenticator.java Java代码 1. package com.util.mail; 2. 3. import javax.mail.*; 4. 5. public class MyAuthenticator extends Authenticator{ 6. String userName=null; 7. String password=null; 8. 9. public MyAuthenticator(){ 10. } 11. public MyAuthenticator(String username, String password) { 12. this.userName = username; 13. this.password = password; 14. } 15. protected PasswordAuthentication getPasswordAuthentication(){ 16. return new PasswordAuthentication(userName, password); 17. } 18. } 19. 下面给出使用上面三个类的代码: Java代码 1. public static void main(String[] args){ 2. //这个类主要是设置邮件 3. MailSenderInfo mailInfo = new MailSenderInfo(); 4. mailInfo.setMailServerHost("smtp.163.com"); 5. mailInfo.setMailServerPort("25"); 6. mailInfo.setValidate(true); 7. mailInfo.setUserName("[email protected]"); 8. mailInfo.setPassword("**********");//您的邮箱密码 9. mailInfo.setFromAddress("[email protected]"); 10. mailInfo.setToAddress("[email protected]"); 11. mailInfo.setSubject("设置邮箱标题"); 12. mailInfo.setContent("设置邮箱内容"); 13. //这个类主要来发送邮件 14. SimpleMailSender sms = new SimpleMailSender(); 15. sms.sendTextMail(mailInfo);//发送文体格式 16. sms.sendHtmlMail(mailInfo);//发送html格式 17. }
利用Java发送邮件(含附件)的例子 1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面) emailsmtp=smtp.qq.comemail[email protected]mailpass=******2、读取配置文件的类文件(ReadPropertity.java) import java.io.IOException;import java.util.Properties;public class ReadPropertity { static Properties props = new Properties(); static { try { props.load(ReadPropertity.class.getClassLoader().getResourceAsStream( "utils.properties")); } catch (IOException e1) { e1.printStackTrace(); } } public static String getProperty(String key) { return props.getProperty(key); }}3、邮件处理类(EmailHandle.java)import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;/*** 本程序用java来实现Email的发送, 所用到的协议为:smtp* <p>Company: 疯狂的IT人</p>* time:2013-04-05* @author www.crazyiter.com* @date * @version 1.0 */public class EmailHandle { private MimeMessage mimeMsg; //邮件对象 private Session session; //发送邮件的Session会话 private Properties props;//邮件发送时的一些配置信息的一个属性对象 private String sendUserName; //发件人的用户名 private String sendUserPass; //发件人密码 private Multipart mp;//附件添加的组件 private List files = new LinkedList();//存放附件文件 public EmailHandle(String smtp) { sendUserName = ""; sendUserPass = ""; setSmtpHost(smtp);// 设置邮件服务器 createMimeMessage(); // 创建邮件 } public void setSmtpHost(String hostName) { if (props == null) props = System.getProperties(); props.put("mail.smtp.host", hostName); } public boolean createMimeMessage(){ try { // 用props对象来创建并初始化session对象 session = Session.getDefaultInstance(props, null); } catch (Exception e) { System.err.println("获取邮件会话对象时发生错误!" + e); return false; } try { mimeMsg = new MimeMessage(session); // 用session对象来创建并初始化邮件对象 mp = new MimeMultipart();// 生成附件组件的实例 } catch (Exception e) { return false; } return true; } /** * 设置SMTP的身份认证 */ public void setNeedAuth(boolean need) { if (props == null) props = System.getProperties(); if (need) props.put("mail.smtp.auth", "true"); else props.put("mail.smtp.auth", "false"); } /** * 进行用户身份验证时,设置用户名和密码 */ public void setNamePass(String name, String pass) { sendUserName = name; sendUserPass = pass; } /** * 设置邮件主题 * @param mailSubject * @return */ public boolean setSubject(String mailSubject) { try { mimeMsg.setSubject(mailSubject); } catch (Exception e) { return false; } return true; } /** * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8 * @param mailBody * @return */ public boolean setBody(String mailBody) { try { BodyPart bp = new MimeBodyPart(); bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8"); // 在组件上添加邮件文本 mp.addBodyPart(bp); } catch (Exception e) { System.err.println("设置邮件正文时发生错误!" + e); return false; } return true; } /** * 增加发送附件 * @param filename * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常 * @return */ public boolean addFileAffix(String filename) { try { BodyPart bp = new MimeBodyPart(); FileDataSource fileds = new FileDataSource(filename); bp.setDataHandler(new DataHandler(fileds)); bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null)); // 解决附件名称乱码 mp.addBodyPart(bp);// 添加附件 files.add(fileds); } catch (Exception e) { System.err.println("增加邮件附件:" + filename + "发生错误!" + e); return false; } return true; } public boolean delFileAffix(){ try { FileDataSource fileds = null; for(Iterator it = files.iterator() ;it.hasNext();) { fileds = (FileDataSource)it.next(); if(fileds != null && fileds.getFile() != null){ fileds.getFile().delete(); } } }catch (Exception e) { return false; } return true; } /** * 设置发件人地址 * @param from * 发件人地址 * @return */ public boolean setFrom(String from) { try { mimeMsg.setFrom(new InternetAddress(from)); } catch (Exception e) { return false; } return true; } /** * 设置收件人地址 * @param to收件人的地址 * @return */ public boolean setTo(String to) { if (to == null) return false; try { mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); } catch (Exception e) { return false; } return true; } /** * 发送附件 * @param copyto * @return */ public boolean setCopyTo(String copyto) { if (copyto == null) return false; try { mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto)); } catch (Exception e) { return false; } return true; } /** * 发送邮件 * @return */ public boolean sendEmail() throws Exception{ mimeMsg.setContent(mp); mimeMsg.saveChanges(); System.out.println("正在发送邮件...."); Session mailSession = Session.getInstance(props, null); Transport transport = mailSession.getTransport("smtp"); // 连接邮件服务器并进行身份验证 transport.connect((String) props.get("mail.smtp.host"), sendUserName,sendUserPass); // 发送邮件 transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO)); System.out.println("发送邮件成功!"); transport.close(); return true; }}4、邮件发送的类文件(SendEmail.java)/*** 发送邮件测试* <p>Company: 疯狂的IT人</p>* time:2013-04-05* @author www.crazyiter.com* @date * @version 1.0 */public class SendEmail { public SendEmail() { } /***以后需要两个参数:接收方地址 、 内容***/ public static void send(String subject, String toaddress,String content)throws Exception { String hostName = ReadPropertity.getProperty("emailsmtp"); String fromAddress = ReadPropertity.getProperty("emailaddress"); String fromAPass = ReadPropertity.getProperty("emailpass"); EmailHandle emailHandle = new EmailHandle(hostName); emailHandle.setFrom(fromAddress); emailHandle.setNeedAuth(true); emailHandle.setSubject(subject); emailHandle.setBody(content); emailHandle.setTo(toaddress); emailHandle.setFrom(fromAddress); emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径 emailHandle.setNamePass(fromAddress, fromAPass); emailHandle.sendEmail(); } public static void main(String[] args) { try { SendEmail.send("带附件的邮件测试","[email protected]","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}5、发送邮件需要的jar包:activation.jarmail-plugin.jarmail.jar6、打包下载: 疯狂的IT人整理java邮件发送(源码).rar 下载地址: http://www.crazyiter.com/bbs/forum.php?mod=attachment&aid=MjF8MzQzOTYzZjB8MTM2NTE3NjczMHwxfDExNDA%3D
package com.lccert.crm.chemistry.util; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail { private static SendMail instance = null; private SendMail() { } public static SendMail getInstance() { if (instance == null) { instance = new SendMail(); } return instance; } public void send() { try { String to[]={"[email protected]","[email protected]"}; Properties p = new Properties(); //Properties p = System.getProperties(); p.put("mail.smtp.auth", "true"); p.put("mail.transport.protocol", "smtp"); p.put("mail.smtp.host", "smtp.163.com"); p.put("mail.smtp.port", "25"); //建立会话 Session session = Session.getInstance(p); Message msg = new MimeMessage(session); //建立信息 msg.setFrom(new InternetAddress("[email protected]")); //发件人 String toList = getMailList(to); InternetAddress[] iaToList = new InternetAddress().parse(toList); msg.setRecipients(Message.RecipientType.TO,iaToList); //收件人 msg.setSentDate(new Date()); // 发送日期 msg.setSubject("javamail测试邮件"); // 主题 msg.setText("注意,这是测试程序发的,请不要回复!"); //内容 // 邮件服务器进行验证 Transport tran = session.getTransport("smtp"); tran.connect("smtp.163.com", "tiwson", "9041160"); // bluebit_cn是用户名,xiaohao是密码 tran.sendMessage(msg, msg.getAllRecipients()); // 发送 System.out.println("邮件发送成功"); } catch (Exception e) { e.printStackTrace(); } } private String getMailList(String[] mailArray){ StringBuffer toList = new StringBuffer(); int length = mailArray.length; if(mailArray!=null && length <2){ toList.append(mailArray[0]); }else{ for(int i=0;i<length;i++){ toList.append(mailArray[i]); if(i!=(length-1)){ toList.append(","); } } } return toList.toString(); } }
JavaMail 是用于发送和接收电子邮件的 Java API。可以使用 JavaMail API 从多个发件人发送电子邮件,下面是一个示例: ```java import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MultipleSenders { public static void main(String[] args) { // 发件人列表 String[] fromList = {"send[email protected]", "send[email protected]"}; // 收件人 String to = "[email protected]"; // SMTP 服务器地址 String host = "smtp.example.com"; // 邮件标题 String subject = "JavaMail Test"; // 邮件内容 String text = "This is a test email from JavaMail."; // 发件人用户名和密码 String username = "username"; String password = "password"; // 设置邮件会话属性 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", "587"); // 获取邮件会话 Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(username, password); } }); try { // 创建邮件消息 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromList[0])); for (int i = 1; i < fromList.length; i++) { message.addFrom(InternetAddress.parse(fromList[i])); } message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(text); // 发送邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们使用 `addFrom()` 方法将多个发件人添加到邮件消息中。注意,SMTP 服务器可能会对此进行限制,因此请确保您遵守 SMTP 服务器的规定。另外,也要确保您有权使用添加的所有发件人地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值