锁定老帖子 主题:javamail
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-24
package test; import java.util.*; import java.io.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendMail { public static void main(String[] args) { try { 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");//这里设置服务是163还是其他服务如果用qq需要163换成qq p.put("mail.smtp.port", "25"); //建立会话 Session session = Session.getInstance(p); Message msg = new MimeMessage(session); //建立信息 msg.setFrom(new InternetAddress("chenshuai5214@163.com")); //发件人 msg.setRecipient(Message.RecipientType.TO, new InternetAddress("chenshuai365@163.com")); //收件人 msg.setSentDate(new Date()); // 发送日期 msg.setSubject("答话稀有"); // 主题 msg.setText("快点下在"); //内容 // 邮件服务器进行验证 Transport tran = session.getTransport("smtp"); tran.connect("smtp.163.com", "发送人账号", "发送人密码"); // bluebit_cn是用户名,xiaohao是密码 tran.sendMessage(msg, msg.getAllRecipients()); // 发送 System.out.println("邮件发送成功"); } catch (Exception e) { e.printStackTrace(); } } } 上面的代码是一个简单的用JAVA发送邮件的例子,其中我们是用163的邮箱来发送邮件的,所以服务器是smtp.163.com,然后发件人是chenshuai5214@163.com,注意,因为我们是用163的服务器来发送邮件的,所以我们的发件人就必须是163的邮箱,至于收件人的话可以是任意的邮箱。 整个发邮件的思想:导入相关的包→生成属性对象→创建javamail会话→编写javamail消息→发送javamail消息。
导入包用不着多说,生成属性对象的话就是红色部分,这个的话全世界都是一样的,只是注意那个邮件服务器的设置就行,对了,额外说句,发送邮件是用SMTP协议,接收邮件才是POP3协议或者其他的。。。
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class sendMailMul extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=GBK"; //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); request.setCharacterEncoding("gbk"); response.setCharacterEncoding("gbk"); String mailServer = request.getParameter("txtServer").trim(); String mailFrom = request.getParameter("txtFrom").trim(); String mailTo = request.getParameter("txtTo").trim(); String mailSubject = request.getParameter("txtSubject").trim(); String mailMessage = request.getParameter("txtMessage").trim(); String file = request.getParameter("txtAttachment").trim(); mailSubject = new String(mailSubject.getBytes("ISO-8859-1"), "gbk"); mailMessage = new String(mailMessage.getBytes("ISO-8859-1"), "gbk"); file = new String(file.getBytes("ISO-8859-1"), "gbk"); System.out.println("页面数据:"); System.out.println("mailServer:" + mailServer); System.out.println("mailFrom:" + mailFrom); System.out.println("mailTo:" + mailTo); System.out.println("mailSubject:" + mailSubject); System.out.println("mailMessage:" + mailMessage); System.out.println("file:" + file); Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.transport.protocol", "smtp"); p.put("mail.smtp.host", mailServer); p.put("mail.smtp.port", "25"); Session mailsession = Session.getInstance(p); MimeMessage msg = new MimeMessage(mailsession); try { msg.setFrom(new InternetAddress(mailFrom)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo)); msg.setSentDate(new Date()); msg.setSubject(mailSubject); //设置邮件内容,作为Multipart对象的一部分 MimeBodyPart mbp = new MimeBodyPart(); mbp.setText(mailMessage); Multipart mulp = new MimeMultipart(); mulp.addBodyPart(mbp); //设置附件,作为Multipart对象的一部分 mbp = new MimeBodyPart(); DataSource source = new FileDataSource(file); mbp.setDataHandler(new DataHandler(source)); mbp.setFileName(file); mulp.addBodyPart(mbp); //设置信息内容,将Multipart 对象加入信息中 msg.setContent(mulp); Transport tran = mailsession.getTransport("smtp"); tran.connect(mailServer, "bluebit_cn", "xiaohao"); tran.sendMessage(msg, msg.getAllRecipients()); msg.writeTo(System.out); out.println("邮件已经发送到<br>" + mailTo); } catch (Exception e) { e.printStackTrace(); } out.close(); } //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } //Clean up resources public void destroy() { } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-25
javamail最头疼的地方是收件的时候处理标题,因为不同的发件客户端发出来的标题编码都不一样,utf-8,gb2312,gbk全有,甚至不编码的也有。
|
|
返回顶楼 | |
发表时间:2011-05-25
wangyu1221 写道 javamail最头疼的地方是收件的时候处理标题,因为不同的发件客户端发出来的标题编码都不一样,utf-8,gb2312,gbk全有,甚至不编码的也有。
有没有好的解决方案啊 可以分享一下嘛? 我也是才接触到mail有很多问题可能还没有遇到, |
|
返回顶楼 | |
发表时间:2011-05-27
标题编码的问题,好像获取时候可以获得他的编码。
我也记不太清了,不过这个问题google一下,就能查到。 发邮件这里,我想问题最大的在于用同一账户,多次发送邮件时,会报错,这个的解决方案比较重要,不知道其他人有什么好办法。 现在采用的就是错误了,稍微等下,然后再继续发送 |
|
返回顶楼 | |
发表时间:2011-05-27
好贴,很简单很明了
|
|
返回顶楼 | |
发表时间:2011-05-27
这也能上首页,iteye搞什么。
|
|
返回顶楼 | |
发表时间:2011-05-27
这种帖子 baidu下 随处可见 关键问题没有提出来 嗨 真不知道怎么上主页的
|
|
返回顶楼 | |
发表时间:2011-05-27
本来就是这么简单
|
|
返回顶楼 | |
发表时间:2011-05-27
顺便列举一下一个网站可以通过mail对用户做些什么:
1.资讯订阅和信息推荐: 如51cto.com的IT技术周刊,虾米网的每周音乐推荐,爱词霸的每日一句(不过这个是短信订阅的)之类的东东. 2.账户管理: 用户注册后发验证邮件或欢迎邮件;用户忘记密码后通过邮箱更改密码; 3.提醒邮件: 如常见的"亲爱的朋友,您已经很久没有登录XXX网站了....",如节假日的祝福邮件,节假日特别活动的通知邮件. 大多数网站都有了站内信的功能,都不常通过mail和用户联系了.... |
|
返回顶楼 | |
发表时间:2011-05-28
可以使用gmail发送和发送到gmail不?
|
|
返回顶楼 | |