java发送邮件

合集下载

java 邮件发送失败处理方案

java 邮件发送失败处理方案

java 邮件发送失败处理方案作为一名职业写手,我将为您详细阐述Java邮件发送失败的处理方案。

在实际应用中,邮件发送失败可能会给工作和生活带来诸多不便。

以下我们将分析失败原因及相应的解决方案,帮助您轻松应对邮件发送问题。

一、问题概述邮件发送失败,通常表现为邮件无法送达收件人手中。

这种情况可能是由多种原因导致的,我们需要针对具体原因进行排查和处理。

二、失败原因分析1.邮件服务器问题:邮件服务器出现故障或维护,可能导致邮件发送失败。

2.网络连接问题:网络不稳定或连接中断,会影响邮件的正常发送。

3.邮件账号问题:发件人或收件人的邮件账号设置有误,如密码错误、邮箱空间不足等。

4.邮件内容问题:邮件中含有敏感词汇或超大附件,可能导致邮件被拦截或拒绝。

5.发送频率问题:短时间内发送大量邮件,可能会触发邮件服务器的防垃圾邮件机制,导致发送失败。

三、解决方案1.检查邮件服务器:确认邮件服务器是否正常运行,如有问题,等待服务器恢复正常或联系运维人员进行处理。

2.检查网络连接:确保网络稳定且连接正常,修复网络故障。

3.检查邮件账号信息:核实发件人及收件人的邮件账号、密码等信息是否正确,清理邮箱空间,确保邮箱正常使用。

4.优化邮件内容:避免使用敏感词汇,减小附件大小,保证邮件内容合规。

5.调整发送频率:避免短时间内大量发送邮件,可采用批量发送或分批发送的方式。

6.使用第三方邮件发送服务:考虑使用第三方邮件发送平台,如SendGrid、Mailgun等,提高邮件发送成功率。

四、失败处理流程当发现邮件发送失败时,请按照以下流程进行处理:1.分析失败原因:根据错误提示或邮件服务器日志,初步判断失败原因。

2.排查问题:针对原因进行分析,逐一排查相关因素。

3.解决问题:找到问题后,及时采取相应措施进行解决。

4.测试发送:解决问题后,重新发送邮件并观察发送结果。

5.优化方案:总结失败经验,优化邮件发送方案,预防类似问题再次发生。

javamail收发邮件(带附件,正文带图)

javamail收发邮件(带附件,正文带图)

1.邮件1.1 邮件组成部分如果是新邮件就获取,并解析它;邮件是由邮件头和邮件体组成,在邮件头中主要包含了收件人、发件人、主题等等基础信息。

而邮件体中就包括了邮件的正文和附件等内容信息。

下图就是pop3协议下,邮件的大致内容。

1.2 发送邮件(带附件、正文带图片)QQ邮箱为例:需要QQ账号和QQ登录第三方客户端时,密码框的“授权码”(相当于密码)授权码如下获取:代码如下:public class JavaMailboxAttachment {private MimeMessage message;private Session session;private String mailHost = "";private String mailAuth = "";private String mailPort = "";private String sender_username = "";private String sender_password = "";//定义一个Properties 用于存放信息private Properties properties = new Properties();//-------------------------------发信箱---------------------------------------------public JavaMailboxAttachment(String email_type) {try {properties.put("mail.smtp.host",""); //发送邮件服务器//端口号,QQ邮箱给出了两个端口,但是另一个我一直使用不了,所以就给出这一个587properties.put("mail.smtp.port", "587"); //发送邮件端口号properties.put("mail.smtp.auth", "true");// 此处填写你的账号properties.put("er", "xxxxxxxxx@");// 此处的密码就是前面说的16位STMP授权码properties.put("mail.password", "xxxxxxxxxxxxxxxx");this.mailHost = properties.getProperty("mail.smtp.host");this.mailAuth = properties.getProperty("mail.smtp.auth");this.mailPort = properties.getProperty("mail.smtp.port");this.sender_username = properties.getProperty("er");this.sender_password = properties.getProperty("mail.password");} catch (Exception e) {e.printStackTrace();}// 构建授权信息,用于进行SMTP进行身份验证Authenticator authenticator = new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName = properties.getProperty("er");String password = properties.getProperty("mail.password");return new PasswordAuthentication(userName, password);}};session = Session.getInstance(properties,authenticator); //用户验证message = new MimeMessage(session); //将验证成功的session信息,创建一个message 对象。

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(⼗三)使⽤javamail进⾏发送邮件,(使⽤QQ,163,新浪邮箱服务器) 加油加油。

--WZY⼀、发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协议,默认端⼝,25 POP3:Post Office Protocol 3,即邮局协议,接收邮件的协议,默认端⼝,110 知道了这两个协议,下⾯来说说邮件发送和接收的原理图,分两种,相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不⼀样的。

解释: 为了⽅便起见,将新浪邮箱,list@称为⽤户A,将搜狐邮箱,wangwu@ 称为⽤户B ⽤户A(新浪邮箱,list@)给⽤户B(搜狐邮箱,wangwu@)发送⼀封邮件,那么整个过程就为图中的实线部分,⽤户A通过OutLook(浏览器或者客户端)登录⾃⼰的邮箱帐号,编写邮件,使⽤Smtp协议发送给Sina的邮件服务器中的Smtp服务器(专门⽤来发送的服务器),然后在通过SMTP协议,传输给Sohu的邮件服务器中的Smtp服务器,然后通过Sohu的Smtp服务器将邮件发送给⽤户B的存储设备进⾏存储(每个⽤户都会有⼀个存储空间⽤来存储邮件的),到这⾥,⽤户A就相当于发送成功了,因为已经到达了⽬的地,如果B⽤户需要查看邮件内容,必须通过POP3服务器将从⾃⼰的存储设备中拿到,然后返回到浏览器或者客户端中显⽰。

⽤户B给⽤户A发送⼀封邮件,那么整个过程就为图中的虚线部分,是和A给B发⼀样的步骤 ⽤户A给⼀个同样使⽤新浪邮箱的⽤户C发送⼀封邮件,那么其过程就简单的多了,先通过Smtp服务器,然后smtp服务器会将其发送到⽤户C的存储设备上,A发送邮件就成功了,⽤户C要显⽰⾃⼰邮箱中的邮件,那么就通过POP3服务器从⾃⼰存储设备中拿取所有邮件进⾏查看。

⼆、通过Java代码实现发送邮件 2.1、准备jar包 核⼼:mail.jar 依赖:activation.jar,邮件需要发送附件时使⽤ 2.2、使⽤163邮箱发送邮件 2.2.1、⾸先在163邮箱中注册⼀个帐号。

Java实现发送邮件,图片,附件

Java实现发送邮件,图片,附件

Java实现发送邮件,图⽚,附件1、JavaMail 介绍JavaMail 是sun公司(现以被甲⾻⽂收购)为⽅便Java开发⼈员在应⽤程序中实现邮件发送和接收功能⽽提供的⼀套标准开发包,它⽀持⼀些常⽤的邮件协议,如前⾯所讲的SMTP,POP3,IMAP,还有MIME等。

我们在使⽤JavaMail API 编写邮件时,⽆须考虑邮件的底层实现细节,只要调⽤JavaMail 开发包中相应的API类就可以了。

JavaMail 下载地址:2、JavaMail APIJavaMail API 按照功能可以划分为如下三⼤类:①、创建和解析邮件的API②、发送邮件的API③、接收邮件的API以上三种类型的API在JavaMail 中由多个类组成,但是主要有四个核⼼类,我们在编写程序时,记住这四个核⼼类,就很容易编写出Java邮件处理程序。

Message 类:javax.mail.Message 类是创建和解析邮件的核⼼ API,这是⼀个抽象类,通常使⽤它的⼦类javax.mail.internet.MimeMessage 类。

它的实例对象表⽰⼀份电⼦邮件。

客户端程序发送邮件时,⾸先使⽤创建邮件的 JavaMail API 创建出封装了邮件数据的 Message 对象,然后把这个对象传递给邮件发送API(Transport 类)发送。

客户端程序接收邮件时,邮件接收API把接收到的邮件数据封装在Message 类的实例中,客户端程序在使⽤邮件解析API从这个对象中解析收到的邮件数据。

Transport 类:javax.mail.Transport 类是发送邮件的核⼼API 类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如 SMTP 协议,客户端程序创建好Message 对象后,只需要使⽤邮件发送API 得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调⽤它的发送⽅法,就可以把邮件发送给指定的 SMTP 服务器。

使用java发送短信和邮件

使用java发送短信和邮件

使⽤java发送短信和邮件(1)发送短信1.1在中国⽹建SMS上注册⼀个⽤户名,并获取短信密钥(⾮登录密码)1.2代码import java.io.IOException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import ValuePair;import mons.httpclient.methods.PostMethod;public class SendMessage {/*** @param args* @throws IOException* @throws HttpException*/public static void main(String[] args) throws HttpException, IOException {HttpClient client=new HttpClient();PostMethod post=new PostMethod("");//在头⽂件中设置转码post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");NameValuePair[] data={new NameValuePair("Uid","⽹建注册⽤户名"),new NameValuePair("Key","短信密钥"),new NameValuePair("smsMob","接收号码"),new NameValuePair("smsText","短信内容")};post.setRequestBody(data);client.executeMethod(post);Header[] headers=post.getRequestHeaders();int statusCode=post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h:headers){System.out.println(h.toString());}String result=new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result);post.releaseConnection();}1.3注意需要引⼊包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar1.4StatusCode说明:短信发送后返回值说 明-1没有该⽤户账户-2接⼝密钥不正确不是账户登陆密码-21MD5接⼝密钥加密不正确-3短信数量不⾜-11该⽤户被禁⽤-14短信内容出现⾮法字符-4⼿机号格式不正确-41⼿机号码为空-42短信内容为空-51短信签名格式不正确接⼝签名格式为:【签名内容】-6IP限制⼤于0短信发送数量2、发邮件2.1smtp验证类import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SmtpAuthenticator extends Authenticator {String username=null;String password=null;public SmtpAuthenticator(String name,String password) {super();ername=name;this.password=password;}public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(ername, this.password);}}2.2发邮件的⼯具类import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;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;public class JavaMailSendUtil {public void sendMail(String subject,String from,String[] to,String test,String[] filenames,String mineType){try {Properties props=new Properties();String smtp="";//设置发送邮件所⽤到的smtpString servername="188********@";String serverpassword="************";Session mailSession=null;MimeMessage mimeMsg=null;props=ng.System.getProperties();props.put("mail.smtp.host", smtp);//设置SMTP主机props.put("mail.smtp.auth", "true");//是否到服务器⽤户名和密码验证//到服务器验证发送的⽤户名和密码是否正确SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword);//设置邮件会话注意这⾥讲认证信息放进了Session的创建参数⾥mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther);//设置传输协议javax.mail.Transport transport=mailSession.getTransport("smtp");//设置from、to等信息mimeMsg=new javax.mail.internet.MimeMessage(mailSession);if(from!=null&&!from.equals("")){InternetAddress sendFrom=new InternetAddress(from);mimeMsg.setFrom(sendFrom);//设置发送⼈地址}InternetAddress[] sendTo=new InternetAddress[to.length];for(int i=0;i<to.length;i++){System.out.println("发送到:"+to[i]);sendTo[i]=new InternetAddress(to[i]);}mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312");MimeBodyPart messageBodyPart1=new MimeBodyPart();messageBodyPart1.setContent(test,mineType);//附件传输格式Multipart multipart=new MimeMultipart();multipart.addBodyPart(messageBodyPart1);for(int i=0;i<filenames.length;i++){MimeBodyPart messageBodyPart2=new MimeBodyPart();String filename=filenames[i].split(";")[0];System.out.println(filename);String displatname=filenames[i].split(";")[1];//得到数据源FileDataSource fds=new FileDataSource(filename);//BodyPart添加附件本⾝messageBodyPart2.setDataHandler(new DataHandler(fds));//BodyPart添加附件⽂件名messageBodyPart2.setFileName(MimeUtility.encodeText(displatname));multipart.addBodyPart(messageBodyPart2);}mimeMsg.setContent(multipart);//设置信件头的发送⽇期mimeMsg.setSentDate(new Date());mimeMsg.saveChanges();//发送邮件Transport.send(mimeMsg);transport.close();System.out.println("消息发送成功");} catch (Exception e) {// TODO: handle exception}}}2.3测试类public class TestMailSend {/*** @param args*/public static void main(String[] args) {String title="测试邮件";String from="188********@";String sendTo[]={"1245226995@","jlsong186@"};String content="just test java send mail<br><a href=\"\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"};JavaMailSendUtil test=new JavaMailSendUtil();try {test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312");} catch (Exception e) {e.printStackTrace();}}}。

Java邮件收发SMTP和POP3

Java邮件收发SMTP和POP3

Java邮件收发SMTP和POP3Java邮件收发SMTP和POP3SMTP的连接和收发过程:a.建立TCP连接。

b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收。

c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行d.协商结束,发送邮件,用命令DATA发送e.以.表示结束输入内容一起发送出去f.结束此次发送,用QUIT命令退出。

SMTP的基本命令集:HELO 向服务器标识用户身份MAIL 初始化邮件传输mail from:RCPT 标识单个的邮件接收人;常在MAIL命令后面可有多个rcpt to:DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,初始化数据传输,以.结束。

NOOP 无操作,服务器应响应OKRSET 重置会话,当前传输被取消QUIT 结束会话POP3简介:在POP3协议中有三种状态,认可状态,处理状态,和更新状态。

当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。

POP3基本命令集:USER usernamePASS passwordSTAT 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数LIST 返回邮件数量和每个邮件的大小RETR [Msg#] 返回由参数标识的邮件的全部文本DELE [Msg#] 服务器将由参数标识的邮件标记为删除,由quit命令执行RSET 服务器将重置所有标记为删除的邮件,用于撤消DELE命令NOOP 服务器返回一个肯定的响应QUIT 更新class POP3Demo {private static String POP3Server = "";private static String USERNAME = "username";//实际应用中改成真实的用户名private static String PASSWORD = "password";//实际应用中改成真实的密码public static void main(String[] args) {int POP3Port = 110;Socket client = null;try {// 向POP3服务程序建立一个套接字连接。

Java邮件发送功能实现详解:SMTP协议与JavaMail API

Java邮件发送功能实现详解:SMTP协议与JavaMail API

Java邮件发送功能实现详解:SMTP协议与JavaMail API简介在现代社会中,电子邮件已经成为人们日常沟通的重要方式之一。

而在Java编程领域,实现邮件发送功能同样是一项重要的任务。

通过SMTP协议和JavaMail API,我们可以很方便地在Java程序中实现邮件发送功能。

本文将详细介绍如何使用SMTP协议和JavaMail API在Java程序中实现邮件发送功能。

SMTP协议SMTP(Simple Mail Transfer Protocol)是用于邮件传输的协议,它定义了邮件是如何从发件人传送到收件人的过程。

在使用Java实现邮件发送功能时,我们需要理解SMTP协议的工作原理,并按照协议规范来构建和发送邮件。

SMTP协议的工作流程通常包括以下步骤:1. 发件人向SMTP服务器发送邮件;2. SMTP服务器根据收件人的域名查找目标邮件服务器;3. SMTP服务器将邮件传递给目标邮件服务器; 4. 目标邮件服务器将邮件存储在收件人的邮箱中。

JavaMail APIJavaMail API是一组用于处理电子邮件的Java类库,它提供了发送、接收和处理邮件的功能。

通过JavaMail API,我们可以方便地在Java程序中实现各种邮件相关操作,包括发送邮件、接收邮件、附件处理等。

在使用JavaMail API发送邮件时,一般需要按照以下步骤进行: 1. 创建一个邮件会话(Session)对象; 2. 创建一个邮件(Message)对象,并设置发件人、收件人、主题、内容等信息; 3. 创建一个邮件传输(Transport)对象,并连接到SMTP服务器; 4. 发送邮件并关闭连接。

实现Java邮件发送功能下面将以一个简单的示例来演示如何在Java程序中实现邮件发送功能。

假设我们要发送一封包含文本内容的简单邮件。

```java import java.util.Properties; import javax.mail.; import javax.mail.internet.;public class SendEmail { public static void main(String[] args) { final String username =。

javamaven项目实现发送邮件

javamaven项目实现发送邮件

javamaven项⽬实现发送邮件1,先导⼊⼀个jar包在pom.xml 中写⼊<!-- 邮件start --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><!-- 邮件end -->2,写⼀个邮件的类包括,发送内容,端⼝等public class MailSenderInfo {// 发送邮件的服务器的IP和端⼝private String mailServerHost;private String mailServerPort = "25";// 邮件发送者的地址private String fromAddress;// 邮件接收者的地址private String toAddress;// 登陆邮件发送服务器的⽤户名和密码private String userName;private String password;// 是否需要⾝份验证private boolean validate = false;// 邮件主题private String subject;// 邮件的⽂本内容private String content;// 邮件附件的⽂件名private String[] attachFileNames;private String iwallHost ;/*** 获得邮件会话属性*/public Properties getProperties(){Properties p = new Properties();p.put("mail.smtp.host", this.mailServerHost);p.put("mail.smtp.port", this.mailServerPort);p.put("mail.smtp.auth", validate ? "true" : "false");return p;}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 boolean isValidate() {return validate;}public void setValidate(boolean validate) {this.validate = validate;}public String[] getAttachFileNames() {return attachFileNames;}public void setAttachFileNames(String[] fileNames) {this.attachFileNames = fileNames;}public String getFromAddress() {return fromAddress;}public void setFromAddress(String fromAddress) {this.fromAddress = fromAddress;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}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 getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String textContent) {this.content = textContent;}public String getIwallHost() {return iwallHost;}public void setIwallHost(String iwallHost) {this.iwallHost = iwallHost;}}3,为了可配置性,可将上⾯的类的所需信息写⼊配置⽂件⾥<bean id = "mailInfo" class = "xxxxxxx.MailSenderInfo" ><property name="mailServerHost" value = ""></property> <property name="mailServerPort" value = "25"></property><property name="fromAddress" value = "xxxxxxx@xx.xxx"></property><property name="userName" value = "xxxxxxxx"></property><property name="password" value = "xxxxx"></property><property name="iwallHost" value = "http://localhost:8080/xxxxx"></property> </bean>4,写⼀个简单的发送邮件的类,包含发送text或者 html的⽅法public class SimpleMailSender {/*** 以⽂本格式发送邮件* @param mailInfo 待发送的邮件的信息*/public boolean sendTextMail(MailSenderInfo mailInfo) {// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();if (mailInfo.isValidate()) {// 如果需要⾝份认证,则创建⼀个密码验证器authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息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);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}/*** 以HTML格式发送邮件* @param mailInfo 待发送的邮件信息*/public static boolean sendHtmlMail(MailSenderInfo mailInfo){// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();//如果需要⾝份认证,则创建⼀个密码验证器if (mailInfo.isValidate()) {authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());// Message.RecipientType.TO属性表⽰接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO,to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// MiniMultipart类是⼀个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}}5,在类中,实现发送邮件,建议另起线程发送邮件/*** 发送邮件内部类**/class SendEmailThread implements Runnable {private MailSenderInfo mailInfo;public SendEmailThread(MailSenderInfo mailInfo) {this.mailInfo = mailInfo;}@Overridepublic void run() {try {if (this.mailInfo != null) {SimpleMailSender.sendHtmlMail(mailInfo);}} catch (Exception e) {e.printStackTrace();}}}/*** 发送邮件⽅法** @param account* @param code*/public void sendEmail(String account, String code) {WebApplicationContext ac = ContextLoader.getCurrentWebApplicationContext();// 获取当前服务IPMailSenderInfo mailInfo = (MailSenderInfo) ac.getBean("mailInfo");mailInfo.setValidate(Boolean.TRUE);mailInfo.setToAddress(account);mailInfo.setSubject("验证码邮件");mailInfo.setContent("<p>您好!</p><p>感谢您注册成为xxxxxx⽤户!</p><p>您的验证码是:" + code + "。

java邮件发送(单人,多人,抄送,Excel附件)

java邮件发送(单人,多人,抄送,Excel附件)

java邮件发送(单⼈,多⼈,抄送,Excel附件) 直接上代码保存吧package com.westvalley.ceiec.page.report.sendmail;import weaver.email.EmailEncoder;import javax.mail.*;import javax.mail.internet.*;import javax.mail.util.ByteArrayDataSource;import javax.activation.*;import mons.logging.Log;import mons.logging.LogFactory;import ermodel.HSSFWorkbook;import crivia.db.i.DataSet;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.*;/**邮件发送⼯具类* @author whh*/public class Email {Log log = LogFactory.getLog(this.getClass());//发件⼈地址private String mail_from;public void setMail_from(String mailFrom) {mail_from = mailFrom;}public String getMail_from() {return mail_from;}//发件⼈密码private String password;public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}//收件地址private String mail_to;public void setMail_to(String mailTo) {mail_to = mailTo;}public String getMail_to() {return mail_to;}//主题private String title;public void setTitle(String title) {this.title = title;}public String getTitle() {return title;}//内容private String message;public void setMessage(String message) {this.message = message;}public String getMessage() {return message;}//发件⼈邮件服务器如: 191.0.0.6private String send_server;public void setSend_server(String sendServer) {send_server = sendServer;}public String getSend_server() {return send_server;}/** 单个发送 setMail_to(String mailTo)* @return是否正确发送* @throws AddressException*/public boolean SendMail()throws AddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈InternetAddress to_address = new InternetAddress(this.mail_to);message.setRecipient(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("向"+this.mail_to+"发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.toString());return false;}}/**群发* @param addresses 地址list* @return* @throws AddressException*/public boolean SendMail(List<String> addresses) throws AddressException{ try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2017-04-25 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses) throws AddressException{if(0==ccAddresses.size()){ //20170428 whhreturn SendMail(addresses);}try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2019-06-14 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @param is 附件* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses,HSSFWorkbook workBook,String workBookName) throwsAddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//附件ByteArrayOutputStream baos = new ByteArrayOutputStream();workBook.write(baos);baos.flush();byte[] bt = baos.toByteArray();InputStream is = new ByteArrayInputStream(bt, 0, bt.length);baos.close();/*添加正⽂内容*/Multipart multipart = new MimeMultipart();BodyPart contentPart = new MimeBodyPart();// contentPart.setText(this.message);// contentPart.setHeader("Content-Type", "text/html;charset=UTF-8");contentPart.setContent(this.message, "text/html;charset=UTF-8");multipart.addBodyPart(contentPart);/*添加附件*/MimeBodyPart fileBody = new MimeBodyPart();DataSource source = new ByteArrayDataSource(is, "application/msexcel"); fileBody.setDataHandler(new DataHandler(source));// 中⽂乱码问题fileBody.setFileName(MimeUtility.encodeText(workBookName+".xls"));multipart.addBodyPart(fileBody);//设置主题message.setSubject(title);//设置内容message.setContent(multipart);//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/**邮箱初始化,发件⼈邮箱、密码及服务器信息的获取* @return正确获取时返回Email对象,否则为null*/public static Email intiEmail(){// Log log = LogFactory.getLog(this.getClass());Email email = new Email();//获取系统的邮箱信息DataSet data = SQL.select(SQL.sql_Array(" select defmailpassword" +",defmailserver,defmailfrom from SystemSet "));if(data.next()){//发件⼈邮箱地址email.setMail_from(data.get("defmailfrom"));//获取并解析邮箱密码email.setPassword(EmailEncoder.DecoderPassword(data.get("defmailpassword")));// ("Password:"+EmailEncoder.DecoderPassword(data.get("defmailpassword"))); //服务器信息email.setSend_server(data.get("defmailserver"));}if(email.getMail_from().equals("")||email.getPassword().equals("")||email.getSend_server().equals("")){// ("发送⼈邮箱错误");// ("From:"+email.getMail_from()+"Password:"+// email.getPassword()+"Server:"+email.getSend_server());return null;}return email;}}。

JAVAMAIL发送邮件实例-给多人发送、抄送

JAVAMAIL发送邮件实例-给多人发送、抄送

关键技术:
1、MimeMessage的setRecipients方法设置邮件的收件人,其中
Message.RecipientType.TO常量表示收件人类型是邮件接收者,
常量表示收件人类型是抄送者,
Message.RecipientType.BCC常量表示收件人的类型是密送着。
重庆达渝仁科技官网:
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。
虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。
JavaMail包中用于处理电子邮件的核心类是:
Session,Message,Address,Authenticator,Transport,Store,Folder等。
Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
2、在调用MimeMessage的setRecipientsபைடு நூலகம்法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。

java利用springJavaMailSenderImpl发送邮件,支持普通文本、附件、。。。

java利用springJavaMailSenderImpl发送邮件,支持普通文本、附件、。。。

java利⽤springJavaMailSenderImpl发送邮件,⽀持普通⽂本、附件、。

博客分类:本⽂主要介绍利⽤发送邮件。

⾸先介绍了发送⼀般邮件,然后介绍了发送富⽂本(html)邮件及以velocity为模板发送邮件。

邮件发送分为为三步:创建邮件发送器、编写邮件、发送邮件。

Spring的提供了强⼤的邮件发送功能,可发送普通⽂本邮件、带附件邮件、html格式邮件、带图⽚邮件、设置发送内容编码格式、设置发送⼈的显⽰名称。

下⾯就进⾏介绍,⽰例代码中很多都是字符串硬编码,实际使⽤时推荐使⽤spring的配置⽂件进⾏配置。

1、创建邮件发送器⾸先定义对象,并对其进⾏smtp相关信息设置,相当于我们⾃⼰的邮箱,如下:Java代码1. JavaMailSenderImpl mailSender = new JavaMailSenderImpl();2. mailSender.setHost("");3. mailSender.setUsername("mosaic@");4. mailSender.setPassword("asterisks");JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("");mailSender.setUsername("mosaic@");mailSender.setPassword("asterisks");当然更好的⽅法是使⽤配置⽂件进⾏配置,这⾥只是进⾏介绍,忽略硬编码先。

以上主机为邮箱服务商的smtp地址,⽤户名、密码为⽤户⾃⼰的邮箱。

除以上外还可以设置setPort(int port) 、setProtocol(String protocol) 等,可暂时不考虑。

send email with microsoft graph apis 的java例子

send email with microsoft graph apis 的java例子

send email with microsoft graph apis的java例子引言概述:在当今数字化时代,电子邮件成为了人们日常沟通的重要工具。

为了满足不同需求,许多开发者使用Microsoft Graph APIs来发送电子邮件。

本文将通过Java语言提供一些有关使用Microsoft Graph APIs发送电子邮件的示例。

正文内容:1. 连接到Microsoft Graph API1.1 获取访问令牌(Access Token)要使用Microsoft Graph API发送电子邮件,首先需要连接到API。

使用Java语言,可以通过OAuth 2.0授权流程获取访问令牌。

这可以通过调用Microsoft的身份验证服务来完成。

1.2 设置访问令牌(Access Token)获取访问令牌后,需要将其设置为HTTP请求的头部授权标头。

这样,API将知道请求是经过授权的,并且可以执行相应的操作。

1.3 建立HTTP连接使用Java的HTTP库,可以建立与Microsoft Graph API的HTTP连接。

通过指定API的URL和请求类型,可以发送请求并接收响应。

2. 创建电子邮件2.1 设置电子邮件的主题和内容在发送电子邮件之前,需要设置电子邮件的主题和内容。

可以使用Java的字符串操作方法来构建电子邮件的主题和正文。

2.2 添加收件人和抄送人为了发送电子邮件,需要指定收件人和抄送人。

可以使用Microsoft Graph API 提供的电子邮件模板来设置收件人和抄送人的电子邮件地址。

2.3 添加附件如果需要发送附件,可以使用Java的文件操作方法来添加附件。

将附件的文件路径指定为API请求的一部分即可。

3. 发送电子邮件3.1 使用Microsoft Graph API发送电子邮件通过调用Microsoft Graph API的发送电子邮件功能,可以将构建好的电子邮件发送出去。

将API请求的URL设置为发送电子邮件的URL,并将电子邮件的内容作为请求的正文发送。

javamailsenderimpl 协议

javamailsenderimpl 协议

很高兴能为您撰写一篇关于“javamailsenderimpl协议”的高质量文章。

在撰写之前,我会先对这个主题进行充分的评估,确保文章能够深入探讨并全面解释相关内容。

1. 该协议的基本概念和原理javamailsenderimpl协议是一种用于在Java中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。

通过jvamailsenderimpl协议,开发人员可以使用Java程序来发送邮件,实现了邮件发送的自动化和定制化。

2. 该协议的使用和应用场景javamailsenderimpl协议通常在Web应用程序中广泛使用,特别是那些需要发送邮件的场景,比如注册、通知、验证等。

通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。

3. 个人观点和理解我个人认为javamailsenderimpl协议在邮件发送领域发挥了非常重要的作用,它简化了邮件发送的流程,提高了开发效率。

而且,由于可以通过Java程序来控制邮件的发送过程,因此也提供了更多的个性化定制选项。

在实际的项目中,我曾经使用过该协议来实现邮件发送功能,深刻体会到了它的便利性和可靠性。

4. 总结javamailsenderimpl协议是一种能够在Java应用程序中方便地实现邮件发送功能的协议,它的使用和应用场景非常广泛,能够很好地满足各种邮件发送需求。

通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。

以上是一些初步的观点和思路,接下来我会根据这些内容进一步撰写并完善文章,以确保文章的深度和广度兼具。

希望能为您撰写一篇满意的高质量文章!javamailsenderimpl协议是一个用于在Java应用程序中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。

JavaMail API是一个用于处理电流信箱的Java标准扩展,它提供了一种方便的方式来发送和接收电流信箱。

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 attachment用法

java attachment用法

java attachment用法Java的attachment用法主要是用于处理邮件附件的相关操作。

在使用Java发送邮件的过程中,如果需要添加附件,就可以使用attachment来实现。

下面将详细介绍attachment的用法。

1. 创建附件对象在Java中,可以使用MimeBodyPart类来表示邮件附件。

首先需要导入javax.mail.internet包,然后创建一个MimeBodyPart对象,用于表示附件。

import javax.mail.internet.MimeBodyPart;创建MimeBodyPart对象的方法如下:MimeBodyPart attachment = new MimeBodyPart();2. 设置附件内容设置附件的内容可以通过setDataHandler()方法来实现。

可以使用DataHandler对象来封装附件的数据源。

DataHandler类有多个构造方法可以使用,其中一个常用的是使用FileDataSource作为数据源。

String filePath = "路径/文件名";FileDataSource dataSource = new FileDataSource(filePath); DataHandler dataHandler = new DataHandler(dataSource); attachment.setDataHandler(dataHandler);3. 设置附件名称设置附件的名称可以通过设置Content-Type头部字段的filename属性来实现。

使用setFileName()方法可以方便地设置附件的名称。

String fileName = "附件名称";attachment.setFileName(fileName);4. 设置附件的类型附件的类型也需要进行设置,可以通过设置Content-Type头部字段的type属性来实现。

Java发送邮箱验证码、session校验功能

Java发送邮箱验证码、session校验功能

Java发送邮箱验证码、session校验功能本篇主要描述“发送邮箱验证码、session校验”相关前(html\js)后(java)台代码,业务逻辑⽰例,闲话少诉,直接上代码。

1、引⼊的jar包是mail-1.4.jar2、java底层发送邮箱⽅法public boolean sendEMail(Map<String, Object> map) {("電⼦郵件接⼝執⾏開始!");String from = Cache.getInstance().getParamsConstant.EMAIL_FROM);String pwd = Cache.getInstance().getParams(Constant.EMAIL_PWD);String to = String.valueOf(map.get("mail"));String subject = String.valueOf(map.get("subject"));String content = String.valueOf(map.get("content"));String smtpHost = Cache.getInstance().getParams(Constant.EMAIL_SMTPHOST);if(StringUtils.isBlank(to) || StringUtils.isBlank(subject) || StringUtils.isBlank(content)){("郵件地址("+to+")、主題("+subject+")、內容("+content+")有為空項,不符合發送條件");return false;}try{Properties props = new Properties();props.setProperty("mail.transport.protocol", "smtp"); // 使⽤的协议(JavaMail规范要求)props.setProperty("mail.smtp.host", smtpHost); // 发件⼈的邮箱的 SMTP服务器地址props.setProperty("mail.smtp.auth", "true"); // 请求认证,参数名称与具体实现有关// 创建Session实例对象Session session = Session.getDefaultInstance(props);// 创建MimeMessage实例对象MimeMessage message = new MimeMessage(session);// 设置发件⼈message.setFrom(new InternetAddress(from));// 设置收件⼈message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));// 设置发送⽇期message.setSentDate(new Date());// 设置邮件主题message.setSubject(subject);// 设置纯⽂本内容的邮件正⽂message.setText(content);// 保存并⽣成最终的邮件内容message.saveChanges();// 设置为debug模式, 可以查看详细的发送 logsession.setDebug(true);// 获取Transport对象Transport transport = session.getTransport("smtp");// 第2个参数需要填写的是QQ邮箱的SMTP的授权码,什么是授权码,它⼜是如何设置?transport.connect(from, pwd);// 发送,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件⼈, 抄送⼈, 密送⼈transport.sendMessage(message, message.getAllRecipients());transport.close();}catch(Exception e){log.error(e.getMessage(), e);return false;}("電⼦郵件接⼝執⾏完成,執⾏成功!");return true;}3、java业务逻辑层调⽤发送邮箱、验证码加密存储在session中@RequestMapping("/sendEMail.do")public void sendEMail(HttpServletRequest request, HttpServletResponse response) {String json = "{\"success\":false,\"message\":\"操作失败\",\"returnVal\":\"\"}";boolean res = false;//发送邮件标记Map<String, Object> map = new HashMap<String, Object>();try {String username = request.getParameter("username");User user = erService.findUserByLoginname(username);if(null == user){json = "{\"success\":false,\"message\":\"⽆此⼈员\",\"returnVal\":\"\"}";return;}//获取当前绑定邮箱地址String mail = user.getEmail();//验证邮箱地址if(StringUtils.isBlank(mail) || "null".equals(mail)){json = "{\"success\":false,\"message\":\"当前⽤户尚未绑定邮箱\",\"returnVal\":\"\"}";return;}//⽣成验证码String checkcode = Common.getCode();//发送验证码String _debug = Cache.getInstance().getParams(Constant.UIAS_DEBUG);if("1".equals(_debug)){//调试模式不真发送直接回显map.put("checkcode", checkcode);res = true;}else{//⾮调试模式真实发送邮件//验证是否频繁发送验证码请求单位秒String intervalTime = Cache.getInstance().getParams(Constant.EMAIL_INTERVAL_TIME);Object emailTimeFlag = request.getSession().getAttribute("emailTimeFlag");boolean checkTime = true;if (emailTimeFlag != null) {int miao = (int) (((new Date()).getTime() - (Long) emailTimeFlag) / 1000);if (miao <= Integer.parseInt(intervalTime)) {checkTime=false;}}if(checkTime){//组装数据String email_validity = Cache.getInstance().getParams(Constant.EMAIL_VALIDITY);String vartime= String.valueOf((Integer.parseInt(email_validity)/60000));String content = Cache.getInstance().getParams(Constant.EMAIL_CONTENT);String subject = Cache.getInstance().getParams(Constant.EMAIL_SUBJECT);content = content.replaceAll("\\$code", checkcode);content = content.replaceAll("\\$time",vartime);map.put("mail", mail);map.put("subject", subject);map.put("content", content);//调⽤发送res = ieMailService.sendEMail(map);}else{json = "{\"success\":false,\"message\":\"请耐⼼等待,不要频繁发送验证码申请\",\"returnVal\":\"\"}";return;}}//发送成功后续操作if(res){//把验证时间放在session⾥request.getSession().setAttribute("emailTimeFlag", new Date().getTime());//把验证码放在session⾥ md5 2次加密验证码String codeMd5 = DigestUtils.md5Hex((DigestUtils.md5Hex(checkcode).toLowerCase()));request.getSession().setAttribute("emailCodeFlag", codeMd5);if("1".equals(_debug)){json = "{\"success\":true,\"message\":\"邮箱验证码发送成功,已经待填到验证码框!\",\"returnVal\":\"\",\"checkcode\":\""+checkcode+"\"}"; }else{json = "{\"success\":true,\"message\":\"邮箱验证码发送成功,请查收邮件!\",\"returnVal\":\"\"}";}}} catch (Exception e) {logger.error("发送邮件验证码异常", e);}finally{renderHtml(response, json, "encoding:UTF-8");}}4、java验证邮箱,⽐对session中的验证码和提交上来的验证码@RequestMapping("/check.do")public void check(HttpServletRequest request, HttpServletResponse response) {String json = "{\"success\":false,\"message\":\"操作失败\",\"returnVal\":\"\"}";try {//验证码有效期校验String email_validity = Cache.getInstance().getParams(Constant.EMAIL_VALIDITY);Object emailTimeFlag = request.getSession().getAttribute("emailTimeFlag");if (emailTimeFlag != null) {int miao = (int) (((new Date()).getTime() - (Long) emailTimeFlag) / 1000);if (miao >= Integer.parseInt(email_validity)) {json = "{\"success\":false,\"message\":\"验证码已过有效期,请重新获取!\",\"returnVal\":\"\"}";}else{//在有效期内⽐对验证码准确性String checkcode = request.getParameter("checkcode");// md5 2次加密验证码String codeMd5 = DigestUtils.md5Hex((DigestUtils.md5Hex(checkcode).toLowerCase()));Object emailCodeFlag = request.getSession().getAttribute("emailCodeFlag");boolean res = codeMd5.equals(String.valueOf(emailCodeFlag));if(res){json = "{\"success\":true,\"message\":\"验证码通过!\",\"returnVal\":\"\"}";}else{json = "{\"success\":false,\"message\":\"验证码不匹配,请重新核对!\",\"returnVal\":\"\"}";}}}} catch (Exception e) {logger.error("验证码异常", e);}finally{renderHtml(response, json, "encoding:UTF-8");}}5、⼩插曲,java处理要展⽰到页⾯的邮箱和⼿机号加*号隐藏的正则表达式// 括号表⽰组,被替换的部分$n表⽰第n组的内容mail = mail.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)", "$1****$3$4");// 括号表⽰组,被替换的部分$n表⽰第n组的内容phone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");6、HTML 获取验证码按钮<input id="btnMail" type="button" onclick="start_mail_button();" value="获取邮件验证码" />7、js 函数调⽤按钮60秒倒计时//获取邮箱验证码function start_mail_button(){var username = $('#username').val().trim();//⽤⼾名if('' == username){ErrorMsg("请输⼊⽤户名");return;}$.ajax({url: basePath+'/sendEMail.do',type: 'post',dataType: 'json',data: {username: username},success: function(data){if(data.success){SuccMsg(data.message);//页⾯获取验证码按钮样式处理$("#btnMail").attr('disabled','disabled');var count = 1 ;var sum = 60;var i = setInterval(function(){if(count > 60){$("#btnMail").attr('disabled',false);$("#btnMail").val("获取邮箱验证码");clearInterval(i);}else{$("#btnMail").val("剩余"+parseInt(sum - count)+'秒');}count++;},1000);//debug模式待填if(data.checkcode){$("#checkcode").val(data.checkcode);}}else{ErrorMsg("获取失败!"+data.message);}}});}8、提交验证码的js没什么特别的,就不上代码了。

java mail send方法

java mail send方法

一、Java M本人l简介Java M本人l是用于在Java应用程序中发送、接收和管理电流新箱的API。

它提供了一种方便的方式来处理电流新箱,包括创建和发送电流新箱、接收邮件、检查邮件和删除邮件等功能。

二、Java M本人l发送邮件的方法发送邮件是Java M本人l API中最常用的功能之一。

下面是使用Java M本人l API发送邮件的步骤和方法:1. 导入相关的包在使用Java M本人l发送邮件之前,首先需要导入相关的包。

通常情况下,你需要导入javax.m本人l和javax.m本人l.internet这两个包。

2. 创建M本人l Session使用javax.m本人l.Session类创建一个用于连接到邮件服务器的会话对象。

会话对象包含了发送邮件所需的所有配置信息,比如邮件服务器的位置区域、端口号、账号和密码等。

你可以使用Session.getDefaultInstance()方法获取默认的会话对象,也可以使用Session.getInstance()方法根据自定义的配置获取会话对象。

3. 创建MimeMessage对象使用javax.m本人l.internet.MimeMessage类来创建一封邮件。

MimeMessage对象表示一封MIME格式的邮件,包括邮件的发件人、收件人、主题、正文和附件等信息。

4. 设置邮件内容在创建MimeMessage对象之后,可以使用其提供的方法来设置邮件的内容,比如设置发件人、收件人、主题、正文和附件等信息。

5. 发送邮件使用Transport类的send()方法来发送邮件。

在调用send()方法之前,需要先连接到邮件服务器,并使用账号和密码进行身份验证。

发送邮件成功后,需要关闭邮件连接。

三、示例代码下面是一个使用Java M本人l API发送邮件的示例代码:```javaimport javax.m本人l.*;import javax.m本人l.internet.*;import java.util.Properties;public class SendM本人l {public static void m本人n(String[] args) {// 设置邮件服务器Properties properties = new Properties();properties.setProperty("m本人l.smtp.host","smtp.example");properties.setProperty("m本人l.smtp.port", "25");// 创建会话对象Session session = Session.getDefaultInstance(properties);try {// 创建MimeMessage对象MimeMessage message = new MimeMessage(session);// 设置发件人message.setFrom(new InternetAddress("xxx"));// 设置收件人message.addRecipient(Message.RecipientType.TO, new InternetAddress("xxx"));// 设置主题message.setSubject("Test Em本人l");// 设置正文message.setText("This is a test em本人l.");// 发送邮件Transport.send(message);System.out.println("Em本人l sent successfully!");} catch (MessagingException e) {e.printStackTrace();}}}```四、注意事项在使用Java M本人l发送邮件时,需要注意以下几点:1. 邮件服务器的配置在发送邮件之前,需要确保邮件服务器的配置信息是正确的,包括服务器位置区域、端口号、账号和密码等。

Java-465端口邮件发送

Java-465端口邮件发送

Java-465端⼝邮件发送阿⾥云25端⼝默认情况下不可⽤,官⽅解释如下:相关说明:发邮件请使⽤外部邮件服务商的465端⼝或云邮产品。

若有特殊场景,需要从云主机对外连接TCP25端⼝,请提交“25端⼝解封申请”。

提交申请后,需要1个⼯作⽇完成审核,审核结果将邮件通知您。

可以使⽤465端⼝发送邮件代码private static final String MAIL_HOST_VALUE =""; //发送邮件的服务器地址private static final String MAIL_FROM ="xxxxxx";//邮件发送⼈private static final String MAIL_FROM_PASSWORD ="xxxxxx";//邮件发送⼈授权码(不是邮箱密码)private static final String MAIL_SUBJECT_VERIFY_CODE ="xxx⽹【邮箱验证码】";//主题private static final String MAIL_ORGANIZATION ="xxx⽹";//组织public static void Main(String args[]){sendMail("xxx@",MAIL_FROM,MAIL_SUBJECT_VERIFY_CODE,"邮件内容",null))}/*** @Param to 接收者* @Param cc 发送者* @Param subject 主题* @Param content 内容* @Param fileList 附件* */public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){try {Security.addProvider(new .ssl.internal.ssl.Provider());final String SSL_FACTORY = ".ssl.SSLSocketFactory";final Properties p = System.getProperties() ;p.setProperty("mail.smtp.host", MAIL_HOST_VALUE);p.setProperty("mail.smtp.auth", "true");p.setProperty("er", MAIL_FROM);p.setProperty("mail.smtp.pass", MAIL_FROM_PASSWORD);p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);p.setProperty("mail.smtp.socketFactory.fallback", "false");p.setProperty("mail.smtp.port", "465");p.setProperty("mail.smtp.socketFactory.port", "465");// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession session = Session.getInstance(p, new Authenticator(){protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(p.getProperty("er"),p.getProperty("mail.smtp.pass")); }});session.setDebug(true);Message message = new MimeMessage(session);//消息发送的主题message.setSubject(subject);//接受消息的⼈message.setReplyTo(InternetAddress.parse(MAIL_FROM));//消息的发送者message.setFrom(new InternetAddress(p.getProperty("er"),"新乡学院失物招领⽹"));// 创建邮件的接收者地址,并设置到邮件消息中String[] split = to.split(",");InternetAddress []tos = new InternetAddress[split.length];for (int i = 0; i < split.length; i++) {tos[i]=new InternetAddress(split[i]);}// 设置抄送⼈if (cc != null && cc.length() > 0) {message.setRecipients(, InternetAddress.parse(cc));}message.setRecipients(Message.RecipientType.TO, tos);// 消息发送的时间message.setSentDate(new Date());Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(content, "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容message.setContent(mainPart);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {html = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]);html.setDataHandler(new DataHandler(fds));html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mainPart.addBodyPart(html);}}message.setContent(mainPart);message.saveChanges();Transport.send(message);} catch (MessagingException e) {e.printStackTrace();return false;} catch (UnsupportedEncodingException e) {e.printStackTrace();return false;}return true;}code By。

javaMail发送邮件(图片,附件)

javaMail发送邮件(图片,附件)

Java类库中是带有javamail的!所有不需要再下载。

1)运行例子时会出现:Exception in thread "main" ng.NoClassDefFoundError: com/sun/mail/util/LineOutputStream这样的错误,原因是版本不兼容,后来我没有用java ee 5.0而是用j2ee1.4.自己导入mail.jar包就没有出现错误。

2)运行完书本的例子(文本,包含有图片,附件。

另外图片是分为两种,一是引用外部资源,二是嵌入内部)。

对其有个大概的了解。

下面给个完整的例子,包含有图片和附件的。

public class ComplexMessage {/***@param args*@throws MessagingException*@throws AddressException*@throws IOException*@throws FileNotFoundException*/public static void main(String[] args) throws AddressException,MessagingException, FileNotFoundException, IOException{// TODO Auto-generated method stubSession session = Session.getDefaultInstance(new Properties()); // 设置发送邮件的客户端服务器端环境MimeMessage message=createMessage( session);message.writeTo(new FileOutputStream("d:\\test3.eml"));}public static MimeMessage createMessage(Session session) throws AddressException, MessagingException{String from = "4054702459047@";String to = "4074505429047@";String subject = "test";String data = "<FONT face=宋体color=#0909f7 size=7><SPAN style='ACKGROUND-COLOR: #6911ee'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #ffffff'><EM>华南理工大学</EM> </SPAN></SPAN></SPAN></SPAN></FONT>"+"<img src='cid:test1.jpg'>";Message message = new MimeMessage(session);// 创建MimeMessage实例对象message.setFrom(new InternetAddress(from));message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));message.setSentDate(new Date());message.setSubject(subject);MimeBodyPart contentPart=createContent(data,"d:\\test.jpg");MimeBodyPart attachPart1=createAttachment("d:\\xml.xml");MimeBodyPart attachPart2=createAttachment("d:\\report13.jasper");MimeMultipart multipart=new MimeMultipart("mixed");multipart.addBodyPart(contentPart);multipart.addBodyPart(attachPart1);multipart.addBodyPart(attachPart2);//这里MimeMessage是由MIME对象的消息头和MimeMultipart组成,而MimeMultipart可由//MimeBodyPart 组成。

java 邮件发送失败处理方案

java 邮件发送失败处理方案

java 邮件发送失败处理方案onclick事件是一种在HTML和JavaScript中非常常用的事件类型之一。

它用于在顶级元素上绑定单击事件处理程序。

在这个事件的函数中,您可以执行任何JavaScript功能。

onclick事件可以用于按钮、链接、图像等元素上。

当用户单击元素时,onclick 事件将发生并触发相应的JavaScript函数。

在将onclick事件附加到元素时,您可以完全自定义触发事件的函数。

在这篇文章中,我们将深入研究onclick事件的用法,并探讨它在Web开发中的重要性。

表单提交onclick事件通常用于处理表单的提交。

表单通常包含文本输入字段、单选按钮、复选框等。

在表单中,用户通常输入一些信息并单击提交按钮,将其发送到Web 服务器上的PHP或Python脚本。

在这种情况下,我们可以将onclick事件附加到表单提交按钮上,并定义一个函数来处理提交事件。

这个函数可以执行以下操作:验证表单字段是否已填写将表单字段值打包成JSON格式的字符串通过AJAX发送POST请求将数据发送到服务器AJAX请求:当onclick事件发生时,该函数使用AJAX从服务器检索数据。

AJAX (异步JavaScript和XML)是一种用于创建无需使用页面刷新就可以更新Web 页面的Web技术。

使用AJAX,可以使用JavaScript代码向Web服务器发送HTTP请求,并在获得响应后处理它。

用JavaScript中的XMLHttpRequest对象来创建AJAX请求,XMLHttpRequest对象有许多有用的方法和属性,可用于在AJAX对象中处理Web响应。

常规数据收集和分析onclick事件还可以用于从Web页面收集和分析用户行为数据。

当用户与页面上的元素交互或单击时,可以记录它们点击了什么,什么时间点击,以及在页面上停留的时间等信息。

这种收集数据的能力对于增加网站性能非常有用。

通过分析数据,您可以了解用户行为,并确定如何更好地为他们提供服务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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");
PrintWriter out = ServletActionContext.getResponse().getWriter();
}
}else{
fileBody="/doc/test.doc";
}
}
String tfj=fileBody;//附件内容
/* 构建Session对象 */
Properties props = new Properties();
//设置信件的附件
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(urlpath+tfj);
DataHandler dh=new DataHandler(fds);
int i=stIndexOf("/");
//AutoMailConfigBean是邮件设置参数的bean
//发送附件邮件
System.out.println(email);
AutoMailConfigBean t_automailconfig = (AutoMailConfigBean)imailservice.queryForObject(null, null);
}
return null;
}
String fname=tfj.substring(i);//提取文件名
mdp.setFileName(fname);//可以和原文件名不一致,但最好一样
mdp.setDataHandler(dh);
test.addBodyPart(mdp);
message.setContent(test);//把mm作为消息对象的内容
String str1 = "<script>parent.callback('发送成功');parent.opener.location.href='getAllNotice.do';parent.window.close()</script>";
out.println(str1);
out.println(str2);
System.err.println("邮件发送失败的原因是:"+ex.getMessage());
System.err.println("具体错误原因:");
ex.printStackTrace(System.err);
String fileBody=null;
for (NormalDocumentBean c : templateBean) {
if(c.getFileBody()!=null && !" ".equals(c.getFileBody())){
String str=urlpath+c.getFileBody();
NoticeManagerBean bean = new NoticeManagerBean();
bean.setId(Integer.parseInt(sendId));
noticeBean = noticeManagerService.queryForObject("", bean);
templateBean = normalService.queryForList("", beans);
String urlpath = Thread.currentThread().getContextClassLoader().getResource("").getPath().toString();
NormalDocumentBean beans = new NormalDocumentBean();
beans.setId(noticeBean.getDocId());
List<NormalDocumentBean> templateBean = new ArrayList<NormalDocumentBean>();
}else{
String str = "<script>parent.callback('发送失败,请确保邮件参数配置已经填写');parent.opener.location.href='getAllNotice.do';parent.window.close()</script>";
props.put("mail.transport.protocol","smtp");
props.put("mail.smtp.host",t_automailconfig.getSmtpServer());//
props.put("mail.smtp.port",t_automailconfig.getSmtpServerPort());
out.println(str);
}
} catch (Exception ex)
{
String str2 = "<script>parent.callback('发送失败,请确保邮件参数配置是否正确');parent.opener.location.href='getAllNotice.do';parent.window.close()</script>";
BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
mdp.setContent(tcontent,"text/html;charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
test.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中
MyAuthenticator auths = new MyAuthenticator(t_automailconfig.getSmtpUser(),t_automailconfig.getSmtpPassword());
Session mailSession=Session.getDefaultInstance(props,auths);
String tto=email;//收件人地址
String ttitle="通报";
String tcontent="通报管理相关内容,请查看附件";
try
{
if(t_automailconfig!=null && !" ".equals(t_automailconfig)){
MimeMessage message=new MimeMessage(mailSession);
//给消息对象设置发件人/收件人/主题/发信时间
InternetAddress from=new InternetAddress(t_automailconfig.getSmtpMail());
message.saveChanges();
Transport transport=mailSession.getTransport("smtp");
transport.connect(t_automailconfig.getSmtpServer(),t_automailconfig.getSmtpUser(),t_automailconfig.getSmtpPassword());
message.setSentDate(new Date());
Multipart test=new MimeMultipart();//新建一个MimeMultipart对象用来存放多个BodyPart对象
相关文档
最新文档