Java发送邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java发送邮件相关的知识,希望对你有一定的参考价值。

当用户注册以后我希望就发送一封邮件给用户,我在书上看到了有两种方法,一种是使用异步邮件发送的方式放主线程快速返回。但对于高并发的系统,一种更常见的处理方式是使用一台独立的邮件发送服务器,当需要发送邮件时,业务系统向邮件发送服务器发送一个消息,由后者完成具体邮件发送的工作。对这第二种方法我是这样理解的,因为使用JavaMail发送邮件的时候是通过sina或sohu的smtp服务器发送的,它的意思是不是我把信息发送给JMS提供者(例如ActiveMQ),发送信息给JMS提供者后,由JMS提供者帮我帮这些邮件信息再发送给sina或sohu的smtp服务器,是不是这样的模式?我的理解对吗?希望会的大侠教教我

JMS 在你的这个过程中可有可无的

比如 注册后 你在注册成功的后面直接开一个线程 发送邮件 可以的 apache有个发送邮件的包 用起来很方便,这样子就不需要jms

如果你要做成分布式的, 比如 A服务器处理好注册信息后 通知B服务器 让他去发送邮件 那么 A和B之间的通信你就可以用jms 然后在B服务器里面做 前一种方法的做的事情
参考技术A 知道mailTO()嘛?

用java写一个邮件发送代码

发送的是QQ邮箱

参考技术A public boolean mainto()

boolean flag = true;

//建立邮件会话
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp.qq.com");//存储发送邮件的服务器
pro.put("mail.smtp.auth","true"); //通过服务器验证

Session s =Session.getInstance(pro); //根据属性新建一个邮件会话
//s.setDebug(true);

//由邮件会话新建一个消息对象
MimeMessage message = new MimeMessage(s);

//设置邮件
InternetAddress fromAddr = null;
InternetAddress toAddr = null;

try

fromAddr = new InternetAddress(451144426+"@qq.com"); //邮件发送地址
message.setFrom(fromAddr); //设置发送地址

toAddr = new InternetAddress("12345367@qq.com"); //邮件接收地址
message.setRecipient(Message.RecipientType.TO, toAddr); //设置接收地址

message.setSubject(title); //设置邮件标题
message.setText(content); //设置邮件正文
message.setSentDate(new Date()); //设置邮件日期

message.saveChanges(); //保存邮件更改信息

Transport transport = s.getTransport("smtp");
transport.connect("smtp.qq.com", "451144426", "密码"); //服务器地址,邮箱账号,邮箱密码
transport.sendMessage(message, message.getAllRecipients()); //发送邮件
transport.close();//关闭


catch (Exception e)

e.printStackTrace();
flag = false;//发送失败


return flag;


这是一个javaMail的邮件发送代码,需要一个mail.jar本回答被提问者采纳

以上是关于Java发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

java如何实现批量发送邮件

用java写一个邮件发送代码

java Mail 发送外部邮件失败,求解,

java Mail 发送外部邮件失败,求解,

java 发送邮件

使用 Java 发送邮件