java发送邮件(群发单显)

合集下载

java发送邮件(群发单显)

java发送邮件(群发单显)

需要引入mail-1.4.jarpackagecom.mails.service;importjava.io.PrintWriter;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;importjava.util.Vector;importjavax.mail.Message;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/**********************************群发单显* authorzhang*2013-12-11********************************/public class SendMails extends HttpServlet{public static final String mailAddress = "xxxxxxxxxx@";//你的邮箱public static final String mailUsername = "xxxxxxxxxx@";//用户名你的邮箱的用户名public static final String mailPassword = "axxxxxx";//邮箱密码public static final String mailServer = "";/****/private static final long serialVersionUID = 3862187047161135701L;public void doGet(HttpServletRequestreq,HttpServletResponse res){this.process(req, res);}public void doPost(HttpServletRequestreq,HttpServletResponse res){this.process(req, res);}/*** 群发单显* @paramreq* @param res*/public void process(HttpServletRequestreq,HttpServletResponse res){ try {req.setCharacterEncoding("utf-8");String emails = req.getParameter("emails");String title = req.getParameter("title");String content = req.getParameter("content");if(emails == null){return ;}//aaaaaa@,aaaaaaaaaaaaa@sends(mailAddress, emails, title,content);res.setCharacterEncoding("gbk");PrintWriter pw = res.getWriter();pw.append("发送邮件成功!");pw.close();pw.flush();} catch (Exception e) {e.printStackTrace();}}/*** 群发单显* @paramstr_from* @paramstr_to* @paramstr_title* @paramstr_content* @throws Exception*/public static void sends(String str_from, String str_to, String str_title, String str_content) throws Exception {try {Properties props = new Properties();props.put("mail.smtp.host", mailServer);props.put("mail.smtp.auth", "true");Session s = Session.getInstance(props, null);s.setDebug(true);MimeMessage message = new MimeMessage(s);InternetAddress from = new InternetAddress(str_from);message.setFrom(from); // 设置发件人的地址// 设置收件人,并设置其接收类型为TO//InternetAddress to = new InternetAddress(str_to);String[] toStr = str_to.split(",");InternetAddress [] tos = null;if(toStr == null || toStr.length<= 0){return ;}tos = new InternetAddress[toStr.length];for (inti = 0; i<toStr.length; i++) {tos[i]= new InternetAddress(toStr[i]);//设置每一个接收邮件的地址}message.setRecipients(Message.RecipientType.TO, tos);// 设置标题message.setSubject(str_title);// 设置信件内容// message.setText(str_content); //发送文本邮件,下面一行为发送html邮件message.setContent(str_content, "text/html;charset=gbk");// 设置发信时间message.setSentDate(new Date());// 存储邮件信息message.saveChanges();Transport transport = s.getTransport("smtp");// 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码transport.connect(mailServer, mailUsername, mailPassword);// 发送邮件,其中第二个参数是所有已设好的收件人地址transport.sendMessage(message, message.getAllRecipients());transport.close();} catch (Exception e) {throw e;}}}页面:<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="SendEmail"method="post">输入邮箱:<input name="emails"/>多个邮箱以 "," 逗号隔开<br/>邮件标题:<input name="title"><br/>邮件内容<input name="content"><br/><input type="submit"value="提交"></form></body></html>Web.xml<?xml version="1.0"encoding="UTF-8"?><web-app version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>SendEmail</servlet-name><servlet-class>com.mails.service.SendMails</servlet-class> </servlet><servlet-mapping><servlet-name>SendEmail</servlet-name><url-pattern>/SendEmail</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>。

java发邮件方法

java发邮件方法

java发邮件方法Java是一种功能强大的编程语言,它提供了多种方法来实现发送邮件的功能。

本文将介绍两种常用的Java发邮件的方法,分别是使用JavaMail API和使用Spring Framework的JavaMail库。

JavaMail API是一个用于发送和接收电子邮件的标准API,它是Java平台的一部分。

使用JavaMail API,我们可以在Java程序中轻松地发送邮件。

下面是使用JavaMail API发送邮件的步骤:1. 添加依赖:首先,我们需要在我们的Java项目中添加JavaMail API的依赖。

可以通过Maven或Gradle等构建工具,将以下依赖添加到项目的构建文件中:```xml<dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency>```2. 创建会话对象:接下来,我们需要创建一个会话对象,用于与邮件服务器进行通信。

可以使用javax.mail.Session类的getInstance()方法来创建会话对象,该方法接受一个Properties对象作为参数,用于指定邮件服务器的配置信息,如SMTP 服务器的地址、端口号等。

```javaProperties properties = new Properties();properties.put("mail.smtp.host", "");properties.put("mail.smtp.port", "25");Session session = Session.getInstance(properties);```3. 创建邮件消息:然后,我们需要创建一个邮件消息对象,用于设置邮件的各种属性,如发件人、收件人、主题、内容等。

java发送邮件

java发送邮件
File file=new File(str);
if(file.exists()){
fileBody = c.getFileBody();
System.out.println(c.getFileBody());
}else{
fileBody="/doc/test.doc";
message.setFrom(from);
InternetAddrmessage.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
props.put("mail.smtp.auth", "true"); //如果smtp服务器要求验证需使用该语句
System.setProperty( "mail.mime.charset", "utf-8" ); //邮件编码设置
/* 创建用户认证对象, 如果smtp服务器需要验证则使用该对象 */
transport.sendMessage(message,message.getAllRecipients());
transport.close();
//发送通报信息
NoticeManagerBean bb = new NoticeManagerBean();
public String sendEmail() throws MessagingException, IOException{
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");

Java发送邮件——SpringBoot集成JavaMail

Java发送邮件——SpringBoot集成JavaMail

Java发送邮件——SpringBoot集成JavaMail ⽤途:此⽂仅供,⾃⼰今后的⼩程序通过邮件,批量通知⽤户。

简单记录了⼀些发送基本邮件的操作。

项⽬(SpringBoot版本为2.1.2.RELEASE):核⼼依赖(其他相关依赖,在其使⽤的地⽅具体说明):<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>application.yml——邮件发送相关配置:spring:mail:host: username: ***@password: *** #qq邮箱开启POP3/SMTP服务后,⽣成的授权码receiver: ***@protocol: smtpdefault-encoding: utf-8邮件实体类(使⽤Lombok的注解简化实体构造):import lombok.Data;import org.springframework.core.io.FileSystemResource;@Datapublic class MailBean {private String subject;private String text;private FileSystemResource file;private String attachmentFilename;private String contentId;}简单封装邮件发送的⼯具类:import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import ponent;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;@Componentpublic class MailUtil {private final JavaMailSender mailSender;@Value("${ername}")private String sender;@Value("${spring.mail.receiver}")private String receiver;@Autowiredpublic MailUtil(JavaMailSender mailSender) {this.mailSender = mailSender;}public void sendMailSimple() {SimpleMailMessage mimeMessage = new SimpleMailMessage();mimeMessage.setFrom(sender);mimeMessage.setTo(receiver);mimeMessage.setSubject("主题");mimeMessage.setText("正⽂");mailSender.send(mimeMessage);}private void sendMail(MailBean mailBean, boolean html, boolean multipart) {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, multipart); helper.setFrom(sender);helper.setTo(receiver);helper.setSubject(mailBean.getSubject());helper.setText(mailBean.getText(), html);if (mailBean.getFile() != null) {helper.addAttachment(mailBean.getAttachmentFilename(), mailBean.getFile()); }} catch (MessagingException e) {e.printStackTrace();}mailSender.send(mimeMessage);}public void sendMail(MailBean mailBean) {sendMail(mailBean, true, true);}public void sendMailText(MailBean mailBean) {sendMail(mailBean, false, false);}public void sendMailHtml(MailBean mailBean) {sendMail(mailBean, true, false);}public void sendMailInline(MailBean mailBean) {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);try {helper.setFrom(sender);helper.setTo(receiver);helper.setSubject(mailBean.getSubject());helper.setText(mailBean.getText(), true);helper.addInline(mailBean.getContentId(), mailBean.getFile());} catch (MessagingException e) {e.printStackTrace();}mailSender.send(mimeMessage);}}单元测试就不写了,忘记怎么写了。

Java发送邮件

Java发送邮件

详细资料 uYŠ |?
9. 10. 11.
public static String TEXT = "text/plain;charset=gb2312"; public static String HTML = "text/html;charset=gb2312";
d }"g,SZ[¢
12.
搜索
private String mailServerHost; private String mailServerPort = "25";
// •®NöSÑ• € v„W0W@ // •®Nöc¥e6€ v„W0W@
elena_java
wangwenzhi66
19. 20. 21. 22.
// v{陆邮件发送服务器的用户名和密码
private boolean validate = false;
// f/T&— ‰•Ž«Ný验证
/blog/852725 (1 of 12)2011-4-14 10:09:27
q
Windowsxpxl盘安装fedora11
96. 97.
q
Android‘Çu(PULL‰ãg•XMLe‡ 档
98. 99. 100. 101.
q
GWTbSSp
102. 103.
q
关于MPVj!_
104. 105. 106.
q
107. 108. 109.
q
Xðf ÿ ITeyee‡zàrH权属于作者,受 法律保护。没有作者书面许可不得转 载。若作者同意转载,必须以超链接 形式标明文章原始出处和作者。 © 2003-2011 . All rights reserved. [ N¬ICP证110151S÷ ]

用Java代码发送邮件的方法

用Java代码发送邮件的方法

⽤Java代码发送邮件的⽅法 注册某个⽹站⼀般都需要邮箱激活: 注册后,该⽹站会给你填写的邮箱发送⼀条激活信息,点击对应的链接即可完成激活。

激活成功后,就可以正常登录该⽹站了。

⽽该业务就可以通过Java代码实现: 关于邮件激活这⼀块,⽼实说本来不打算专门花⼀晚上时间学习的。

毕竟这种类型的知识点需要⽤到的时候相对⽽⾔很少,就算遇到了通过⽹络也能解决。

后来我想了想,我能够通过⽹络查询到别⼈的教程,那为何不能让别⼈查询我的笔记呢? 所以还是花了⼀个晚上的世界来学习,同时也⽅便⾃⼰以后遇到该需求后查看。

⼀、Java发送邮箱 既然是发送邮箱,⾸先需要⼀个固定的发件邮箱地址,⽽这个邮箱要开通POP3服务。

我这边使⽤的是⽹易提供的邮箱,通过邮箱的设置可以开启该服务。

开启服务后,需要通过⼿机号验证;验证成功会获得⼀个授权码,这个需要记下来。

有了这个授权码之后,就可以通过Java代码发送邮箱了,发件⼈也就是该邮箱。

当然发送邮件的技术挺多的,我这边使⽤的是apache提供的commons-mail。

导⼊该依赖后就可以编写代码了。

①创建htmlEamil对象 apache-mail中是使⽤HtmlEmail这个类来操作邮件的。

②配置服务器参数 setHostName:设定服务器地址。

setAuthentication:翻译过来就是认证的意思,所以需要输⼊邮箱名和授权码。

③设置发件⼈和收件⼈ setCharset:设定编码格式为“gb2312”,国家制定的⼀套标准,gb即国标的拼⾳缩写。

setFrom:这个是设定发件⼈,也就是上述获取授权码的那个邮箱。

setaddTo:这个是设定收件⼈,也就是谁注册就是谁的邮箱,动态获取,我这边测试就先⽤我⾃⼰的另⼀个邮箱代替。

④设置邮件的主题和正⽂ setSubject:发给⽤户的邮件标题,⼀般都是“XXX⽹站激活邮件” setMsg:发送正⽂,⼀般都是“恭喜你,注册成功!请点击链接激活”,再附带⼀个链接。

java发送email一般步骤

java发送email一般步骤

java发送email⼀般步骤java发送email⼀般步骤⼀、引⼊javamail的jar包:⼆、创建⼀个测试类,实现将要发送的邮件内容写⼊到计算机本地,查看是否能够将内容写⼊:public static void main(String[] args) throws Exception {// 1. 创建⼀封邮件Properties props = new Properties(); // ⽤于连接邮件服务器的参数配置(发送邮件时才需要⽤到)Session session= Session.getDefaultInstance(props); // 根据参数配置,创建会话对象(为了发送邮件准备的)MimeMessage message = new MimeMessage(session); // 创建邮件对象/** 也可以根据已有的eml邮件⽂件创建 MimeMessage 对象* MimeMessage message = new MimeMessage(session, new FileInputStream("MyEmail.eml"));*/// 2. From: 发件⼈// 其中 InternetAddress 的三个参数分别为: 邮箱, 显⽰的昵称(只⽤于显⽰, 没有特别的要求), 昵称的字符集编码// 真正要发送时, 邮箱必须是真实有效的邮箱。

message.setFrom(new InternetAddress("123456@", "USER_AA", "UTF-8"));// 3. To: 收件⼈message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("123654@", "USER_CC", "UTF-8")); // To: 增加收件⼈(可选)//message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("dd@", "USER_DD", "UTF-8")); // Cc: 抄送(可选)//message.setRecipient(, new InternetAddress("ee@", "USER_EE", "UTF-8")); // Bcc: 密送(可选)//message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("ff@", "USER_FF", "UTF-8")); // 4. Subject: 邮件主题message.setSubject("TEST邮件主题", "UTF-8");// 5. Content: 邮件正⽂(可以使⽤html标签)message.setContent("TEST这是邮件正⽂。

Java基于JavaMail实现向QQ邮箱发送邮件

Java基于JavaMail实现向QQ邮箱发送邮件

Java基于JavaMail实现向QQ邮箱发送邮件最近项⽬在做新闻爬⾍,想实现这个功能:爬⾍某个页⾯失败后,把这个页⾯的 url 发到邮箱。

最终实现的效果图如下,后期可以加上过滤标签、失败状态码等,⽅便分类搜索异常。

开发⼈员可以根据邮件⾥的 url 和堆栈信息,分析爬⾍失败的原因。

是不是服务器 down 了?还是爬⾍的 Dom 解析没有解析到内容?还是正则表达式对于这个页⾯不适⽤?开启SMTP服务在 QQ 邮箱⾥的设置->账户⾥开启 SMTP 服务注意开启完之后,QQ 邮箱会⽣成⼀个授权码,在代码⾥连接邮箱使⽤这个授权码⽽不是原始的邮箱密码,这样可以避免使⽤明⽂密码。

⽹上查了⼀下例⼦,根据这篇⽂章 Java Mail(⼆):JavaMail介绍及发送⼀封简单邮件的⽰例代码。

Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要⾝份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");Session session = Session.getInstance(props);//邮件内容部分Message msg = new MimeMessage(session);msg.setSubject("seenews 错误");StringBuilder builder = new StringBuilder();builder.append("url = " + "/never_cxb/article/details/50524571");builder.append("页⾯爬⾍错误");builder.append("\n data " + TimeTool.getCurrentTime());msg.setText(builder.toString());//邮件发送者msg.setFrom(new InternetAddress("**发送⼈的邮箱地址**"));//发送邮件Transport transport = session.getTransport();transport.connect("", "**发送⼈的邮箱地址**", "**你的邮箱密码或者授权码**");transport.sendMessage(msg, new Address[] { new InternetAddress("**接收⼈的邮箱地址**") });transport.close();但是报错了DEBUG SMTP: AUTH LOGIN command trace suppressedDEBUG SMTP: AUTH LOGIN failedException in thread "main" javax.mail.AuthenticationFailedException: 530Error: A secure connection is requiered(such as ssl). More information at /cgi-bin/help?id=28因为⽰例代码是⽤的163邮箱,⽽笔者是 QQ 邮箱,看 Log 分析是 QQ 邮箱需要 SSL 加密。

java email邮件发送

java email邮件发送

1、java邮件发送,需要的包:mail.jar 和commons-email.jar 2、简单实现实现的方法3、基本类的介绍。

一个抽象类,对java mail进行了封装,提供主要接口如下setHostName(String):设置smtp服务器地址setSmtpPort(int):设置smtp服务器端setAuthenticator(Authenticator):设置授权帐号和密码setSSL(boolean ssl):是否采用ssl方式连接服务setMailSession(Session):设置与服务器连接sessionsetCharset(String):设置邮件主体编码setFrom(String):设置发件人地址addTo(String):添加收件人地址addCc(String):添加抄送人地址addBcc(String):添加密送人地址addReplyTo(String):添加回复人地址setSubject(String):设置邮件标题setMsg(String):设置邮件主体send():发送邮件SimpleEmail继承Email,实现了setMsg(String msg)方法,发送文本格式邮件,调用非常简单SimpleEmail email = new SimpleEmail();email.setSSL(true);email.setSmtpPort(SMTP_PORT);email.setHostName(SMTP_SERVER);email.setAuthentication(USER_NAME, PASSWORD);email.addTo("**@**.com");email.setFrom("**@**.com");email.setSubject("subject");email.setCharset("GBK");email.setMsg("message");email.send();3)MultiPartEmail继承Email,多了一个添加附件的方法:attach(URL, String, String)attach(URL, String, String, String)attach(DataSource, String, String)attach(DataSource, String, String, String)attach(EmailAttachment)调用方式如下:MultiPartEmail email = new MultiPartEmail();email.setSSL(true);email.setSmtpPort(SMTP_PORT);email.setHostName(SMTP_SERVER);email.setAuthentication(USER_NAME, PASSWORD);email.addTo("**@**.com");email.setFrom("**@**.com");email.setSubject("subject");email.setCharset("GBK");email.setMsg("message");email.attach("file:///***.pom.xml", "pom.xml", "pom");email.send();4)HtmlEmail继承MultiPartEmail,与SimpleEmail相比,多了一个setHtmlMsg(String msg)方法,用户设置html格式内容,调用方式同SimpleEmail几乎一致HtmlEmail email = new HtmlEmail();email.setSSL(true);email.setSmtpPort(SMTP_PORT);email.setHostName(SMTP_SERVER);email.setAuthentication(USER_NAME, PASSWORD);email.addTo("**@**.com");email.setFrom("**@**.com");email.setSubject("subject");email.setCharset("GBK");email.setHtmlMsg("<html><body><b>this is email message!</body></html>");email.send();缺点不能接收邮件。

Java发送邮件

Java发送邮件

Java发送邮件Java 发送邮件Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

那么大家知道Java 如何发送邮件呢?下面一起来看看!Java 发送邮件使用Java应用程序发送E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。

您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个Downloads 链接,点击它下载。

您可以从 Java 网站下载最新版本的 JAF(版本 1.1.1)。

你也可以使用本站提供的下载链接:JavaMail mail.jar 1.4.5JAF(版本 1.1.1) activation.jar下载并解压缩这些文件,在新创建的顶层目录中,您会发现这两个应用程序的一些 jar 文件。

您需要把 mail.jar 和activation.jar 文件添加到您的 CLASSPATH 中。

如果你使用第三方邮件服务器如QQ的SMTP服务器,可查看文章底部用户认证完整的实例。

发送一封简单的 E-mail下面是一个发送简单E-mail的例子。

假设你的localhost已经连接到网络。

SendEmail.java 文件代码:// 文件名 SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // 收件人电子邮箱Stringto="**************";//发件人电子邮箱 String from = "*************";// 指定发送邮件的主机为localhost Stringhost = "localhost"; // 获取系统属性Properties properties = System.getProperties(); // 设置邮件服务器properties.setProperty("mail.smtp.host", host); // 获取默认session对象Session session = Session.getDefaultInstance(properties); try{ // 创建默认的MimeMessage 对象MimeMessage message = new MimeMessage(session); // Set From: 头部头字段message.setFrom(new InternetAddress(from)); // Set To: 头部头字段message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头部头字段message.setSubject("This is the Subject Line!"); // 设置消息体message.setText("This is actual message"); // 发送消息Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }编译并运行这个程序来发送一封简单的E-mail:$ java SendEmailSent message successfully....如果你想发送一封e-mail给多个收件人,那么使用下面的方法来指定多个收件人ID:void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException下面是对于参数的描述:type:要被设置为 TO, CC 或者 BCC,这里 CC 代表抄送、BCC 代表秘密抄送。

java实现邮件发送

java实现邮件发送

java实现邮件发送本⽂实例为⼤家分享了java实现邮件发送的具体代码,供⼤家参考,具体内容如下1.使⽤socket通信功能实现java的邮件传输1.1 什么是socetSocket的英⽂原义是“孔”或“插座”。

在⽹络编程中,⽹络上的两个程序通过⼀个双向的通信连接实现数据的交换,这个连接的⼀端称为⼀个socket。

Socket套接字是通信的基⽯,是⽀持TCP/IP协议的⽹络通信的基本操作单元。

它是⽹络通信过程中端点的抽象表⽰,包含进⾏⽹络通信必须的五种信息:连接使⽤的协议,本地主机的IP地址,本地进程的协议端⼝,远地主机的IP地址,远地进程的协议端⼝。

Socket本质是编程接⼝(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做⽹络开发所⽤的接⼝,这就是Socket编程接⼝;HTTP是轿车,提供了封装或者显⽰数据的具体形式;Socket是发动机,提供了⽹络通信的能⼒。

1.2.Socket的原理Socket实质上提供了进程通信的端点。

进程通信之前,双⽅⾸先必须各⾃创建⼀个端点,否则是没有办法建⽴联系并相互通信的。

正如打电话之前,双⽅必须各⾃拥有⼀台电话机⼀样套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

1、服务器监听:是服务器端套接字并不定位具体的客户端套接字,⽽是处于等待连接的状态,实时监控⽹络状态。

2、客户端请求:是指由客户端的套接字提出连接请求,要连接的⽬标是服务器端的套接字。

为此,客户端的套接字必须⾸先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端⼝号,然后就向服务器端套接字提出连接请求。

3、连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建⽴⼀个新的线程,把服务器端套接字的描述发给客户端,⼀旦客户端确认了此描述,连接就建⽴好了。

⽽服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

JAVA发送邮件

JAVA发送邮件

以下是两种邮件发送方式。

给出的例子是是发送HTML格式带附件的邮件。

(普通文本格式的邮件基本上可以不关心,现在的邮件都是HTML格式的!)如果不要发送附件,只要发送单纯的HTML邮件。

只要把附件部分去掉即可Java代码1./**2.*用spring mail 发送邮件,依赖jar:spring.jar,activation.jar,mail.jar3.*/4.5.public static void sendFileMail() throws MessagingException {6. JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();7.8. // 设定mail server9. senderImpl.setHost("");10. senderImpl.setUsername("yuhan0");11. senderImpl.setPassword("******");12. // 建立HTML邮件消息13. MimeMessage mailMessage = senderImpl.createMimeMessage();14. // true表示开始附件模式15. MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");16.17. // 设置收件人,寄件人18. messageHelper.setTo("slimes@");19. messageHelper.setFrom("yuhan0@");20. messageHelper.setSubject("测试邮件!");21. // true 表示启动HTML格式的邮件22. messageHelper.setText("<html><head></head><body><h1>你好:附件!!</h1></body></html>", true);23.24. FileSystemResource file1 = new FileSystemResource(new File("d:/logo.jpg"));25. FileSystemResource file2 = new FileSystemResource(new File("d:/读书.txt"));26. // 添加2个附件27. messageHelper.addAttachment("logo.jpg", file1);28.29. try {30. //附件名有中文可能出现乱码31. messageHelper.addAttachment(MimeUtility.encodeWord("读书.txt"), file2);32. } catch (UnsupportedEncodingException e) {33. e.printStackTrace();34. throw new MessagingException();35. }36. // 发送邮件37. senderImpl.send(mailMessage);38. System.out.println("邮件发送成功.....");39.40. }41./***用apache commons-email 发送邮件*依赖jar:commons-email.jar,activation.jar,mail.jar*/public static void sendMutiMessage() {MultiPartEmail email = new MultiPartEmail();String[] multiPaths = new String[] { "D:/1.jpg", "D:/2.txt" };List<EmailAttachment> list = new ArrayList<EmailAttachment>();for (int j = 0; j < multiPaths.length; j++) {EmailAttachment attachment = new EmailAttachment();//判断当前这个文件路径是否在本地如果是:setPath 否则 setURL;if (multiPaths[j].indexOf("http") == -1) {attachment.setPath(multiPaths[j]);} else {try {attachment.setURL(new URL(multiPaths[j]));} catch (MalformedURLException e) {e.printStackTrace();}}attachment.setDisposition(EmailAttachment.ATTACHMENT);attachment.setDescription("Picture of John");list.add(attachment);}try {// 这里是发送服务器的名字:email.setHostName("");// 编码集的设置email.setCharset("utf-8");// 收件人的邮箱email.addTo("slimes@");// 发送人的邮箱email.setFrom("yuhan0@");// 如果需要认证信息的话,设置认证:用户名-密码。

Java实现网易企业邮箱发送邮件

Java实现网易企业邮箱发送邮件

Java实现⽹易企业邮箱发送邮件最近项⽬需要⽤⽹易企业邮箱发送邮件,特意来将实现过程记录⼀下:maven导⼊jar包1 <!-- javax.mai 核⼼包 -->2 <dependency>3 <groupId>javax.activation</groupId>4 <artifactId>activation</artifactId>5 <version>1.1</version>6 </dependency>7 <dependency>8 <groupId>javax.mail</groupId>9 <artifactId>mail</artifactId>10 <version>1.4.5</version>11 </dependency>java 使⽤ javax.mail 实现企业邮箱邮件发送1 import java.util.Properties;2 import javax.mail.internet.InternetAddress;3 import javax.mail.internet.MimeMessage;4 import javax.mail.internet.MimeUtility;5 import org.apache.log4j.Logger;6 import org.springframework.mail.javamail.JavaMailSenderImpl;7 import org.springframework.mail.javamail.MimeMessageHelper;8 import com.sun.mail.util.MailSSLSocketFactory;910public class SendMailSmtp {11private static Logger log = Logger.getLogger(SendTemplateSMS.class);1219public static void sendHtmlMail() {20try{21 String from = "邮箱账号名";//发件⼈昵称展⽰ *22 String[] to ={"接收邮箱1","接收邮箱2"};//接收邮箱23 String subject = "邮件主题";//邮件主题 *24 String text = "邮件内容";25 String host = "";//163企业邮箱smtp *26 String username = "发件的企业邮箱";//企业邮箱 *27 String password= "发件的企业邮箱的授权码";//企业邮箱密码 *2829//设置服务器验证信息30 Properties prop = new Properties();31 prop.setProperty("mail.smtp.auth", "true");32 prop.setProperty("mail.smtp.timeout", "994"); // 加密端⼝(ssl) 可通过 https:///help/client-profile.html 进⾏查询3334 MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL加密35 sf.setTrustAllHosts(true); // 设置信任所有的主机36 prop.put("mail.smtp.ssl.enable", "true");37 prop.put("mail.smtp.ssl.socketFactory", sf);3839//设置邮件内容40 JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();41 MimeMessage message = javaMailSend.createMimeMessage();42 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");43 String nick = MimeUtility.encodeText(from);//设置昵称44 messageHelper.setFrom(new InternetAddress(nick + " <"+username+">"));// 邮件发送者45 messageHelper.setTo(to);46 messageHelper.setSubject(subject);47 messageHelper.setText(text, true);4849//设置邮件服务器登录信息50 javaMailSend.setHost(host);51 javaMailSend.setUsername(username);52 javaMailSend.setPassword(password);53 javaMailSend.setJavaMailProperties(prop);54 ("maillText:" + text);55 javaMailSend.send(message);56 } catch (Exception e) {57// TODO Auto-generated catch block58 log.error(e);59 e.printStackTrace();60 }61 }6263 }注意:1.邮箱密码是开通pop3/smtp服务时所给的授权码,⽽不是你注册邮箱时的真实密码2.检查⾃⼰邮箱是否开通pop3/smtp服务。

通过Java发送邮件

通过Java发送邮件

通过Java发送邮件1package com.hrj;23import com.sun.mail.util.MailSSLSocketFactory;45import javax.mail.*;6import javax.mail.internet.InternetAddress;7import javax.mail.internet.MimeMessage;8import .InetAddress;9import java.security.GeneralSecurityException;10import java.util.Properties;1112public class MailDemo01 {13public static void main(String[] args) throws GeneralSecurityException, MessagingException {14// 授权码: ??15 Properties prop = new Properties();16 prop.setProperty("mail.host", "");17 prop.setProperty("mail.transport.protocol", "smtp");18 prop.setProperty("mail.smtp.auth", "true");1920// 关于 QQ 邮箱, 还要设置 SSL 加密, 加上以下代码即可21 MailSSLSocketFactory sf = new MailSSLSocketFactory();22 sf.setTrustAllHosts(true);23 prop.put("mail.smtp.ssl.enable", "true");24 prop.put("mail.smtp.ssl.socketFactory", sf);252627// =================== 使⽤ JavaMail 发送邮件的5个步骤 =================== //28// 1. 创建定义整个应⽤程序所需的环境信息的 Session 对象29 Session session = Session.getDefaultInstance(prop, new Authenticator(){30public PasswordAuthentication getPasswordAuthentication() {31// 发件⼈邮件⽤户名, 密码32return new PasswordAuthentication("2191313025@", "??");33 }34 });3536// 开启 session 的 debug 模式37 session.setDebug(true);3839// 2. 通过 session 获得 transport 对象40 Transport transport = session.getTransport();4142// 3. 使⽤邮箱的⽤户名和授权码连接上邮件服务器43 transport.connect("", "2191313025@", "??");4445// 4. 创建邮件46 MimeMessage message = new MimeMessage(session);47 message.setFrom(new InternetAddress("2191313025@")); // 指明邮件发送⼈48 message.setRecipient(Message.RecipientType.TO, new InternetAddress("2191313025@")); // 指明接收⼈49 message.setSubject("欢迎来到西部开源学习 Java"); // 邮件标题50 message.setContent("滴滴滴, 你好啊!", "text/html;charset=UTF-8");5152// 5. 发送邮件53 transport.sendMessage(message, message.getAllRecipients());5455// 6. 关闭连接56 transport.close();575859 }6061 }。

JavaMail发送邮件(超详细)

JavaMail发送邮件(超详细)

JavaMail发送邮件(超详细)⼀:邮件发送的基本概念 本⽂我将阐述使⽤JavaMail⽅式发送和接收Email的详细说明,本博客本着以后遇到类似的邮件发送需求可以直接把代码粘过去直接使⽤,快捷⽅便省时间,对于刚接触的JavaMail的朋友们还是把⽂章过⼀遍,虽然本⽂不是最好的,但是我可以保证你能成功发送邮件; 关于邮件还有⼀些基本知识我将在下⾯简单介绍,关于邮件发送和接收的流程可以参考1:邮件中的⼏个名词发件⼈:指的是⽤哪个邮箱进⾏发送邮件的⼈收件⼈:指的是接收发件⼈发过来邮件的⼈,代表这封邮件⾯向的读者。

可以是零个到多个。

抄送⼈:指的是发件⼈把邮件发送给收件⼈的同时并抄送⼀份发给抄送⼈;此时抄送⼈可以看到收件⼈、抄送⼈的邮箱密送⼈:指的是发件⼈把邮件发送给收件⼈的同时并抄送⼀份发给密送⼈;此时抄送⼈可以看到收件⼈、抄送⼈的邮箱,⽆法看到密送⼈的邮箱说明:抄送⼈和密送⼈⼀般⽤于项⽬组A给项⽬组B发送邮件确认流程,这时项⽬组A还要告知领导我已经把⽅案流程发送给项⽬组B了;这时我就要把流程⽅案抄送⼀份给领导,就可以⽤到抄送和密送,此邮件领导是不⽤回复的2:发送邮件的⼏种⽅式JavaMail 具体使⽤说明参考Oracle官⽹给出的API:Jakarta Mail 具体使⽤说明参考Jakarta官⽅给出的API:1:javax.*也是java标准的⼀部分,但是没有包含在标准库中,⼀般属于标准库的扩展。

通常属于某个特定领域,不是⼀般性的api。

所以以扩展的⽅式提供api,以避免jdk的标准库过⼤。

当然某些早期的javax,后来被并⼊到标准库中,所有也应该属于新版本JDK的标准库。

⽐如jmx,java5以前是以扩展⽅式提供,但是jdk5以后就做为标准库的⼀部分了,所有javax.management也是jdk5的标准库的⼀部分。

2:com.sun.*是sun的hotspot虚拟机中java.* 和javax.*的实现类。

发送邮件及邮件附件java代码实例(支持多附件-群发送)

发送邮件及邮件附件java代码实例(支持多附件-群发送)

以下为Mail。

java的全部代码:package com.zlz3907。

mail;import java。

io。

BufferedReader;import java。

io。

File;import java。

io.FileInputStream;import java.io。

FileNotFoundException;import java.io。

IOException;import java.io.InputStream;import java.io。

InputStreamReader;import java.io。

PrintWriter;import java。

io.UnsupportedEncodingException;import .Socket;import java。

nio。

charset。

Charset;import java。

text.SimpleDateFormat;import java。

util。

ArrayList;import java.util.Date;import java。

util。

HashMap;import java.util.List;import java。

util。

Map;import sun。

misc。

BASE64Encoder;/*** 该类使用Socket连接到邮件服务器,* 并实现了向指定邮箱发送邮件及附件的功能。

**@author Zhong Lizhi*/public class Mail {/*** 换行符*/private static final String LINE_END = "\r\n”;/*** 值为“true”输出高度信息(包括服务器响应信息),值为“*false”则不输出调试信息.*/private boolean isDebug = true;/*** 值为“true”则在发送邮件{@link Mail#send()}* 过程中会读取服务器端返回的消息,* 并在邮件发送完毕后将这些消息返回给用户。

JAVA中发送电子邮件的方法

JAVA中发送电子邮件的方法

JAVA中发送电⼦邮件的⽅法 JAVA中发送邮件的⽅法不复杂,使⽤sun的JavaMail的架包就可以实现,也可以使⽤Spring Boot封装的⽅法,使⽤起来更加便捷。

⼀、下载JavaMail的架包,并导⼊项⽬中,如下:如果是maven项⽬,maven依赖如下:1<dependency>2<groupId>com.sun.mail</groupId>3<artifactId>javax.mail</artifactId>4<version>1.5.6</version>5</dependency>如果使⽤spring的⽅法,还需要导⼊以下maven依赖:1<dependency>2<groupId>org.springframework</groupId>3<artifactId>spring-context-support</artifactId>4<version>4.3.6.RELEASE</version>5</dependency>⼆、使⽤JavaMail发邮件的代码例⼦,如下:1、在main函数中对各项参数进⾏赋值(参数说明已进⾏备注),即可通过send函数进⾏发送邮件操作。

1public class TestEmail {23private final static String TIMEOUT_MS = "20000";45public static void main(String[] args) {6 String host = "";7 String user = "xxxxxx@";8 String password = "xxxxxx";9 String recipients = "xxxxxx@";10 String cc = "";11 String subject = "邮件发送测试";12 String content = "邮件正⽂:<br>你好!";13//⽅式1:通过URL获取附件14// byte[] attachment = FileUtil.getBytesByUrl("http://127.0.0.1/project/test.pdf");15//⽅式2:通过本地路径获取附件16byte[] attachment = FileUtil.getBytesByFile("c://fujian.pdf");1718 String attachmentName = "";19try {20 attachmentName = MimeUtility.encodeWord("这是附件.pdf");21 send(host, user, password, recipients, cc, subject, content, attachment, attachmentName);22 } catch (Exception e) {23 e.printStackTrace();24 }25 }2627/**28 * @param host 邮件服务器主机名29 * @param user ⽤户名30 * @param password 密码31 * @param recipients 收件⼈32 * @param cc 抄送⼈33 * @param subject 主题34 * @param content 内容35 * @param attachment 附件 [没有传 null]36 * @param attachmentName 附件名称 [没有传 null]37 * @throws Exception38*/39public static void send(final String host, final String user, final String password,40final String recipients, final String cc, final String subject, final String content,41final byte[] attachment,final String attachmentName) throws Exception {42 Properties props = new Properties();43 props.put("mail.smtp.host", host);44 props.put("mail.smtp.auth", "true");45 props.put("mail.smtp.timeout", TIMEOUT_MS);4647 Authenticator auth = new Authenticator() {48 @Override49protected PasswordAuthentication getPasswordAuthentication() {50return new PasswordAuthentication(user, password);51 }52 };53 Session session = Session.getInstance(props, auth);54 MimeMessage msg = new MimeMessage(session);55 msg.setFrom(new InternetAddress(user));56 msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));57if (cc != null && cc.length() > 0) {58 msg.setRecipients(, cc);59 }60 msg.setSubject(subject);61// 向multipart对象中添加邮件的各个部分内容,包括⽂本内容和附件62 Multipart multipart = new MimeMultipart();63// 添加邮件正⽂64 BodyPart contentPart = new MimeBodyPart();65 contentPart.setContent(content, "text/html;charset=UTF-8");66 multipart.addBodyPart(contentPart);67// 添加附件的内容68if (attachment!=null) {69 BodyPart attachmentBodyPart = new MimeBodyPart();70 DataSource source = new ByteArrayDataSource(attachment,"application/octet-stream");71 attachmentBodyPart.setDataHandler(new DataHandler(source));72//MimeUtility.encodeWord可以避免⽂件名乱码73 attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachmentName));74 multipart.addBodyPart(attachmentBodyPart);75 }76// 将multipart对象放到message中77 msg.setContent(multipart);78// 保存邮件79 msg.saveChanges();80 Transport.send(msg, msg.getAllRecipients());81 }82 }2、上⾯的例⼦中,如果有附件,可对附件进⾏设置。

java发送email文件

java发送email文件

java发送email⽂件1. 加⼊jar包<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.5.0-b01</version></dependency>2.编码如下:⽅式1:import java.util.Date;import java.util.Properties;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class EmailTest {public static String myEmailAccount = "mabiao008@"; // 发件⼈邮箱地址public static String myEmailPassword = "XXXXXX"; // 发件⼈邮箱密码public static String myEmailSMTPHost = "";public static String receiveMailAccount = "360227812@"; // 收件⼈邮箱地址public static void main(String[] args) throws Exception {// 1. 创建参数配置, ⽤于连接邮件服务器的参数配置Properties props = new Properties(); // 参数配置props.setProperty("mail.transport.protocol", "smtp"); // 使⽤的协议(JavaMail规范要求)props.setProperty("mail.host", myEmailSMTPHost); // 发件⼈的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true");// 2. 根据配置创建会话对象, ⽤于和邮件服务器交互Session session = Session.getDefaultInstance(props);session.setDebug(true); // 设置为debug模式, 如果值为true则可以查看详细的发送 log// 3. 创建⼀封邮件MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount);// 4. 根据 Session 获取邮件传输对象Transport transport = session.getTransport();// 5. 使⽤邮箱账号和密码连接邮件服务器--这⾥认证的邮箱必须与 message 中的发件⼈邮箱⼀致,否则报错transport.connect(myEmailAccount, myEmailPassword);// 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件⼈, 抄送⼈, 密送⼈transport.sendMessage(message, message.getAllRecipients());// 7. 关闭连接transport.close();}/*** 创建⼀封只包含⽂本的简单邮件** @param session 和服务器交互的会话* @param sendMail 发件⼈邮箱* @param receiveMail 收件⼈邮箱* @return* @throws Exception*/public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {// 1. 创建⼀封邮件MimeMessage message = new MimeMessage(session);// 2. From: 发件⼈message.setFrom(new InternetAddress(sendMail, "mabiao008", "UTF-8"));// 3. To: 收件⼈(可以增加多个收件⼈、抄送、密送)message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "测试", "UTF-8"));// 4. Subject: 邮件主题message.setSubject("测试邮件", "UTF-8");// 5. Content: 邮件正⽂(可以使⽤html标签)message.setContent("<font color=\"red\">欢迎光临我的博客: /mabiao008/ </font>", "text/html;charset=UTF-8");// 6. 设置发件时间message.setSentDate(new Date());// 7. 保存设置message.saveChanges();return message;}}⽅式2:需要3个java⽂件⽀持(1)MailSenderInfo.javaimport java.util.Properties;/*** 发送邮件需要使⽤的基本信息* @author mabiao*/public class MailSenderInfo {// 发送邮件的服务器的IPprivate String mailServerHost;// 发送邮件的服务器的端⼝private String mailServerPort = "25";// 邮件发送者的地址private String fromAddress;// 邮件接收者的地址private String[] toAddress;// 邮件密送接收者的地址private String[] toBlindCarbonCopyAddress;// 邮件抄送接收者的地址private String[] toCarbonCopyAddress;// 登陆邮件发送服务器的⽤户名private String userName;// 登陆邮件发送服务器的密码private String password;// 是否需要⾝份验证private boolean validate = false;// 邮件主题private String subject;// 邮件的⽂本内容private String content;// 邮件附件的⽂件名private String[] attachFileNames;/*** 获得邮件会话属性*/public Properties getProperties() {Properties pro = new Properties();pro.put("mail.smtp.host", this.mailServerHost);pro.put("mail.smtp.port", this.mailServerPort);pro.put("mail.smtp.auth", validate ? "true" : "false");return pro;}public String getMailServerHost() {return mailServerHost;}public void setMailServerHost(String mailServerHost) {this.mailServerHost = mailServerHost;}public String getMailServerPort() {return mailServerPort;}public void setMailServerPort(String mailServerPort) {this.mailServerPort = mailServerPort;}public String getFromAddress() {return fromAddress;}public void setFromAddress(String fromAddress) {this.fromAddress = fromAddress;}public String[] getToAddress() {return toAddress;}public void setToAddress(String[] toAddress) {this.toAddress = toAddress;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public boolean isValidate() {return validate;}public void setValidate(boolean validate) {this.validate = validate;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String[] getAttachFileNames() {return attachFileNames;}public void setAttachFileNames(String[] attachFileNames) { this.attachFileNames = attachFileNames;}public String[] getToBlindCarbonCopyAddress() {return toBlindCarbonCopyAddress;}public void setToBlindCarbonCopyAddress(String[] toBlindCarbonCopyAddress) {this.toBlindCarbonCopyAddress = toBlindCarbonCopyAddress;}public String[] getToCarbonCopyAddress() {return toCarbonCopyAddress;}public void setToCarbonCopyAddress(String[] toCarbonCopyAddress) {this.toCarbonCopyAddress = toCarbonCopyAddress;}}(2).MyAuthenticator.javaimport javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class MyAuthenticator extends Authenticator {private String username;private String password;public MyAuthenticator(){}public MyAuthenticator(String username, String password) {ername = username;this.password = password;}@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}(3).SimpleMailSender.javaimport java.io.UnsupportedEncodingException;import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;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;public class SimpleMailSender {/*** 以⽂本格式发送邮件 (⽀持群发,带附件)* @param senderInfo 待发送的邮件的信息* @return*/public static boolean sendMail(MailSenderInfo senderInfo){boolean flag = false;// 判断是否需要⾝份验证MyAuthenticator authenticator = null;Properties props = senderInfo.getProperties();if(senderInfo.isValidate()){// 如果需要⾝份认证,则创建⼀个密码验证器authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(props, authenticator);try {// 根据session创建⼀个邮件消息Message sendMailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(senderInfo.getFromAddress());// 设置邮件消息的发送者sendMailMessage.setFrom(from);// 创建邮件接收者地址String[] tos = senderInfo.getToAddress();if(tos != null && tos.length != 0){InternetAddress[] to = new InternetAddress[tos.length];// 设置邮件消息的发送者for (int i = 0; i < tos.length; i++) {to[i] = new InternetAddress(tos[i]);}sendMailMessage.setRecipients(Message.RecipientType.TO, to);}// 设置邮件抄送者地址String[] toCCs = senderInfo.getToCarbonCopyAddress();if(toCCs != null && toCCs.length != 0){InternetAddress[] toCC = new InternetAddress[toCCs.length];// 设置邮件消息的发送者for (int i = 0; i < toCCs.length; i++) {toCC[i] = new InternetAddress(toCCs[i]);}sendMailMessage.addRecipients(, toCC);}// 设置邮件密送者地址String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();if(toBCCs != null && toBCCs.length != 0){InternetAddress[] toBCC = new InternetAddress[toBCCs.length];for (int i = 0; i < toBCCs.length; i++) {toBCC[i] = new InternetAddress(toBCCs[i]);}sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);}// 设置邮件主题sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));// 设置邮件内容//sendMailMessage.setText(senderInfo.getContent());Multipart multipart = new MimeMultipart();// 邮件⽂本内容if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){BodyPart part = new MimeBodyPart();part.setContent(senderInfo.getContent(), "text/plain;charset=utf-8");//设置邮件⽂本内容 multipart.addBodyPart(part);}// 附件String attachFileNames[] = senderInfo.getAttachFileNames();int leng = attachFileNames == null ? 0 : attachFileNames.length;for (int i = 0; i < leng; i++) {BodyPart part = new MimeBodyPart();// 根据⽂件名获取数据源DataSource dataSource = new FileDataSource(attachFileNames[i]);DataHandler dataHandler = new DataHandler(dataSource);// 得到附件本⾝并⾄⼊BodyPartpart.setDataHandler(dataHandler);// 得到⽂件名同样⾄⼊BodyPartpart.setFileName(MimeUtility.encodeText(dataSource.getName()));multipart.addBodyPart(part);}sendMailMessage.setContent(multipart);// 设置邮件发送的时间sendMailMessage.setSentDate(new Date());// 发送邮件//Transport.send(sendMailMessage);Transport transport = sendMailSession.getTransport("smtp");transport.connect(senderInfo.getUserName(), senderInfo.getPassword());transport.send(sendMailMessage,sendMailMessage.getAllRecipients());transport.close();flag = true;} catch (AddressException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return flag;}public static boolean sendHtmlMail(MailSenderInfo senderInfo){boolean flag = false;// 判断是否需要⾝份验证MyAuthenticator authenticator = null;Properties props = senderInfo.getProperties();if(senderInfo.isValidate()){// 如果需要⾝份认证,则创建⼀个密码验证器authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(props, authenticator);try {// 根据session创建⼀个邮件消息Message sendMailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(senderInfo.getFromAddress());// 设置邮件消息的发送者sendMailMessage.setFrom(from);// 创建邮件接收者地址String[] tos = senderInfo.getToAddress();if(tos != null && tos.length != 0){InternetAddress[] to = new InternetAddress[tos.length];// 设置邮件消息的发送者for (int i = 0; i < tos.length; i++) {to[i] = new InternetAddress(tos[i]);}sendMailMessage.setRecipients(Message.RecipientType.TO, to);}// 设置邮件抄送者地址String[] toCCs = senderInfo.getToCarbonCopyAddress();if(toCCs != null && toCCs.length != 0){InternetAddress[] toCC = new InternetAddress[toCCs.length];// 设置邮件消息的发送者for (int i = 0; i < toCCs.length; i++) {toCC[i] = new InternetAddress(toCCs[i]);}sendMailMessage.addRecipients(, toCC);}// 设置邮件密送者地址String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();if(toBCCs != null && toBCCs.length != 0){InternetAddress[] toBCC = new InternetAddress[toBCCs.length];for (int i = 0; i < toBCCs.length; i++) {toBCC[i] = new InternetAddress(toBCCs[i]);}sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);}// 设置邮件主题sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));// 设置邮件内容//sendMailMessage.setText(senderInfo.getContent());Multipart multipart = new MimeMultipart();// 邮件⽂本内容if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){BodyPart part = new MimeBodyPart();part.setContent(senderInfo.getContent(), "text/html;charset=utf-8");//设置邮件⽂本内容multipart.addBodyPart(part);}// 附件String attachFileNames[] = senderInfo.getAttachFileNames();int leng = attachFileNames == null ? 0 : attachFileNames.length;for (int i = 0; i < leng; i++) {BodyPart part = new MimeBodyPart();// 根据⽂件名获取数据源DataSource dataSource = new FileDataSource(attachFileNames[i]);DataHandler dataHandler = new DataHandler(dataSource);// 得到附件本⾝并⾄⼊BodyPartpart.setDataHandler(dataHandler);// 得到⽂件名同样⾄⼊BodyPartpart.setFileName(MimeUtility.encodeText(dataSource.getName()));multipart.addBodyPart(part);}sendMailMessage.setContent(multipart);// 设置邮件发送的时间sendMailMessage.setSentDate(new Date());// 发送邮件//Transport.send(sendMailMessage);Transport transport = sendMailSession.getTransport("smtp");transport.connect(senderInfo.getUserName(), senderInfo.getPassword());transport.send(sendMailMessage,sendMailMessage.getAllRecipients());// 关闭transporttransport.close();flag = true;} catch (AddressException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return flag;}}(4)MailSendTest.javaimport org.junit.Test;/*** 发送邮件测试*/public class MailSendTest {@Testpublic void run() {MailSenderInfo mailInfo = new MailSenderInfo();mailInfo.setMailServerHost("");mailInfo.setMailServerPort("25");mailInfo.setValidate(true);mailInfo.setUserName("mabiao008"); // 发送⼈的邮箱⽤户名mailInfo.setPassword("XXXX"); // 发送⼈的邮箱密码mailInfo.setFromAddress("mabiao008@");String[] to = {"360227812@"}; // 接收者的邮箱地址mailInfo.setToAddress(to);// String[] toCC = {"**********@"};// mailInfo.setToCarbonCopyAddress(toCC);// String[] toBCC = {"*******@"};// mailInfo.setToBlindCarbonCopyAddress(toBCC);// mailInfo.setAttachFileNames(new String[]{"D:/201611151651020897178_A.jpeg"});mailInfo.setSubject("发送HTML邮件");String body = "<table width=\"80%\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"align:center;text-align:center\"><tr><td>你好</td><td>你好</td><td>你好</td></tr></table>"; mailInfo.setContent(body);// 这个类主要来发送邮件System.out.println(SimpleMailSender.sendHtmlMail(mailInfo));;//发送⽂体格式}}。

JAVA实现邮件群发

JAVA实现邮件群发

JAVA实现邮件群发
朱辉
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2003(000)010
【摘要】邮件群发是消息在Internet传递的最好办法,同时也是垃圾邮件的来源.本文以使用JAVAMAIL为例,讨论实现大规模邮件发送的方法和技巧.
【总页数】3页(P26-27,59)
【作者】朱辉
【作者单位】无
【正文语种】中文
【中图分类】TP31
【相关文献】
1.毕业生就业跟踪系统中邮件群发功能的实现 [J], 邵雨舟
2.基于树突状细胞算法的垃圾邮件群发检测 [J], 杨超;李子怡
3.基于Domino技术的定制邮件群发的设计与实现 [J], 王林华
4.解决邮件群发单显那点事儿 [J], 王杰
5.一种可以携带不同附件邮件群发系统的建立 [J], 李杰;李瑞瑞
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

需要引入mail-1.4.jarpackagecom.mails.service;importjava.io.PrintWriter;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;importjava.util.Vector;importjavax.mail.Message;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/**********************************群发单显* authorzhang*2013-12-11********************************/public class SendMails extends HttpServlet{public static final String mailAddress = "xxxxxxxxxx@";//你的邮箱public static final String mailUsername = "xxxxxxxxxx@";//用户名你的邮箱的用户名public static final String mailPassword = "axxxxxx";//邮箱密码public static final String mailServer = "";/****/private static final long serialVersionUID = 3862187047161135701L;public void doGet(HttpServletRequestreq,HttpServletResponse res){this.process(req, res);}public void doPost(HttpServletRequestreq,HttpServletResponse res){this.process(req, res);}/*** 群发单显* @paramreq* @param res*/public void process(HttpServletRequestreq,HttpServletResponse res){ try {req.setCharacterEncoding("utf-8");String emails = req.getParameter("emails");String title = req.getParameter("title");String content = req.getParameter("content");if(emails == null){return ;}//aaaaaa@,aaaaaaaaaaaaa@sends(mailAddress, emails, title,content);res.setCharacterEncoding("gbk");PrintWriter pw = res.getWriter();pw.append("发送邮件成功!");pw.close();pw.flush();} catch (Exception e) {e.printStackTrace();}}/*** 群发单显* @paramstr_from* @paramstr_to* @paramstr_title* @paramstr_content* @throws Exception*/public static void sends(String str_from, String str_to, String str_title, String str_content) throws Exception {try {Properties props = new Properties();props.put("mail.smtp.host", mailServer);props.put("mail.smtp.auth", "true");Session s = Session.getInstance(props, null);s.setDebug(true);MimeMessage message = new MimeMessage(s);InternetAddress from = new InternetAddress(str_from);message.setFrom(from); // 设置发件人的地址// 设置收件人,并设置其接收类型为TO//InternetAddress to = new InternetAddress(str_to);String[] toStr = str_to.split(",");InternetAddress [] tos = null;if(toStr == null || toStr.length<= 0){return ;}tos = new InternetAddress[toStr.length];for (inti = 0; i<toStr.length; i++) {tos[i]= new InternetAddress(toStr[i]);//设置每一个接收邮件的地址}message.setRecipients(Message.RecipientType.TO, tos);// 设置标题message.setSubject(str_title);// 设置信件内容// message.setText(str_content); //发送文本邮件,下面一行为发送html邮件message.setContent(str_content, "text/html;charset=gbk");// 设置发信时间message.setSentDate(new Date());// 存储邮件信息message.saveChanges();Transport transport = s.getTransport("smtp");// 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码transport.connect(mailServer, mailUsername, mailPassword);// 发送邮件,其中第二个参数是所有已设好的收件人地址transport.sendMessage(message, message.getAllRecipients());transport.close();} catch (Exception e) {throw e;}}}页面:<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="SendEmail"method="post">输入邮箱:<input name="emails"/>多个邮箱以 "," 逗号隔开<br/>邮件标题:<input name="title"><br/>邮件内容<input name="content"><br/><input type="submit"value="提交"></form></body></html>Web.xml<?xml version="1.0"encoding="UTF-8"?><web-app version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>SendEmail</servlet-name><servlet-class>com.mails.service.SendMails</servlet-class> </servlet><servlet-mapping><servlet-name>SendEmail</servlet-name><url-pattern>/SendEmail</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>。

相关文档
最新文档