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 对象。

Java实现outlook服务的邮件发送

Java实现outlook服务的邮件发送

Java实现outlook服务的邮件发送依赖<!-- https:///artifact/javax.mail/mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>POP3接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receivepop3Email() {String host = "";// change accordinglyString mailStoreType = "pop3";String popPort = "995";Store store = null;// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.pop3.host", host);properties.put("mail.pop3.port", popPort);properties.put("mail.pop3.starttls.enable", "true");try {Session emailSession = Session.getDefaultInstance(properties);//打开调式模式,可看到邮件发送过程中各步骤的详细信息// emailSession.setDebug(true);store = emailSession.getStore("pop3s");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}finally {if(null != store){try {store.close();} catch (MessagingException e) {e.printStackTrace();}}}}IMAP接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receiveimapEmail() {String host = "";// change accordinglyString mailStoreType = "imap";String popPort = "993";try {// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.imap.host", host);properties.put("mail.imap.port", popPort);properties.put("mail.imap.starttls.enable", "true");Session emailSession = Session.getDefaultInstance(properties);// emailSession.setDebug(true);Store store = emailSession.getStore("imaps");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}}SMTP发送static String USER_NAME ="****@";static String PASSWORD = "****";public static boolean sendSMTPMail(String to, String text, String title) {String host = "";String mailStoreType = "smtp";String popPort = "587";final Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.store.protocol", mailStoreType);props.put( "mail.smtp.port", popPort );//开启SSLprops.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.socketFactory.port",popPort);props.put("mail.smtp.socketFactory.fallback","false");try {Session session = Session.getDefaultInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(USER_NAME, PASSWORD);//账号密码}});session.setDebug(true);// 创建邮件消息MimeMessage message = new MimeMessage(session);// 设置发件⼈InternetAddress form = new InternetAddress(USER_NAME);message.setFrom(form);// 设置收件⼈InternetAddress toAddress = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, "text/html;charset=UTF-8");// 发送邮件Transport.send(message);return true;} catch (Exception e) {e.printStackTrace();}return false;}插曲: SMTP发送邮件时,第⼀次发送可能会收到如下的报错:OutboundSpamException; Failed to process message due to a permanent exception with message WASCL UserAction verdict is not None 在⽹上查到这是邮箱⼚商的安全策略,出现此异常的同时⼚商会给你发送⼀封确认邮件,只要你登录邮箱并激活该邮件即可使⽤SMTP 发送邮件的功能,邮件内容⼤致如下:。

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;}}。

java发送邮件及邮 件附件代码实例

java发送邮件及邮 件附件代码实例
for (int i = partCount - 1; i >= 0; i--) {
Mail attachment = partSet.get(i);
String attachmentContent = attachment.getContent();
if (null != attachmentContent && 0 < attachmentContent.length()) {
*中查找其相应的MIME类型,如果没找到,则返回
* {@link #defaultAttachmentContentType}
*所指定的默认类型。
*
* @param fileName
*文件名
* @return返回文件对应的MIME类型。
*/
private String getPartContentType(String fileName) {
}
ret = contentTypeMap.get(fileName);
}
if (null == ret) {
ret = defaultAttachmentContentType;
}
return ret;
}
/**
*将给定字符串转换为base64编码的字符串
*
* @param str
*需要转码的字符串
contentTypeMap.put("doc", "application/msword");
contentTypeMap.put("dot", "application/msword");
contentTypeMap.put("docx", "application/msword");

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 sendgrid 抄送方法

java sendgrid 抄送方法

java sendgrid 抄送方法Java SendGrid 抄送方法SendGrid 是一款强大且易于使用的电子邮件服务。

它为开发人员提供了一个简单的方式来发送和接收电子邮件。

在本文中,我们将介绍如何在Java 中使用SendGrid 进行电子邮件抄送。

SendGrid 提供了多种方式来发送电子邮件,包括使用SMTP、Web API 和Java Library。

我们将使用Java Library 来展示如何实现电子邮件抄送功能。

步骤一:设置SendGrid Java Library首先,您需要在您的Java 项目中设置SendGrid Java Library。

您可以通过Maven 或Gradle 添加以下依赖项:<dependency><groupId>com.sendgrid</groupId><artifactId>sendgrid-java</artifactId><version>4.7.4</version></dependency>或者implementation 'com.sendgrid:sendgrid-java:4.7.4'这将添加SendGrid Java Library 到您的项目中。

步骤二:创建SendGrid 对象接下来,您需要在代码中创建SendGrid 对象。

您需要在SendGrid 对象中提供您的SendGrid API 密钥。

import com.sendgrid.SendGrid;import com.sendgrid.SendGridException;public class SendEmail {public static void main(String[] args) {设置SendGrid API 密钥String apiKey = "YOUR_SENDGRID_API_KEY";创建SendGrid 对象SendGrid sendGrid = new SendGrid(apiKey);}}在上面的代码中,您需要将`YOUR_SENDGRID_API_KEY` 替换为您的SendGrid API 密钥。

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,并将电子邮件的内容作为请求的正文发送。

JSP 通过Java Mail组件发送E-mail

JSP  通过Java Mail组件发送E-mail

JSP 通过Java Mail组件发送E-mail
Java Mail组件最常用的功能就是实现发送E-mail。

本节将通过一个具体的实例介绍应用Java Mail组件发送E-mail的方法。

下面是一个发送E-mail实例,代码如下所示。

发送Email页面email.htm
上述代码主要实现的功能是:提供表单,让用户选择要发送的邮件地址、主题和邮件内容,单击"发送"按钮执行发送邮件操作。

执行上述代码,在浏览器中输入
地址“http://wxb:8080/JSP/email.htm”,结果如图8-1所示。

图8-1 发送Email页面
上述代码中,主要实现的功能是对邮件进行处理。

首先使用request内置对象接收email.htm页面提交的数据。

然后声明一个Properties对象设置发件人用到的邮件服务器并用session对象进行引用。

最后声明一个MimeMessage对象设置要发送邮件的主题、内容并使用Transport类的sendMessage()方法发送邮件。

执行上述代码,结果如图8-2所示。

图8-2 执行结果。

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收取和发送邮件 ssl

java收取和发送邮件 ssl

Java 收取和发送邮件+SSL这里使用Gmail 邮箱测试1. 收取邮件[java] view plaincopypackage lius.javamail.ssl; import java.io.UnsupportedEncodingException; importjava.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收取Gmail邮件* @author Winter Lau */ public class GmailFetch { public static void main(Stringargv[]) throws Exception { Security.addProvider(new .ssl.internal.ssl.Provider()); final String SSL_FACTORY = ".ssl.SSLSocketFactory";// Get a Properties object Properties props = System.getProperties();props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同Session session = Session.getDefaultInstance(props,null); //请将红色部分对应替换成你的邮箱帐号和密码URLName urln = newURLName("pop3","",995,null, "邮箱帐号", "邮箱密码"); Store store =session.getStore(urln); Folder inbox = null; try { store.connect(); inbox =store.getFolder("INBOX");inbox.open(Folder.READ_ONLY); FetchProfile profile = new FetchProfile();profile.add(FetchProfile.Item.ENVELOPE);Message[] messages = inbox.getMessages();inbox.fetch(messages, profile); System.out.println("收件箱的邮件数:" + messages.length); for (int i = 0;i &lt; messages.length; i++) { //邮件发送者String from =decodeText(messages[i].getFrom()[0].toString()); InternetAddress ia = new InternetAddress(from); System.out.println("FROM:" +ia.getPersonal()+'('+ia.getAddress()+')'); //邮件标题System.out.println("TITLE:" +messages[i].getSubject()); //邮件大小System.out.println("SIZE:" + messages[i].getSize());//邮件发送时间System.out.println("DATE:" + messages[i].getSentDate()); } } finally{ try { inbox.close(false); } catch (Exception e) {} try { store.close(); } catch (Exception e) {} } } protected static String decodeText(String text) throws UnsupportedEncodingException { if (text == null) return null; if (text.startsWith("=?GB") ||text.startsWith("=?gb")) text =MimeUtility.decodeText(text); else text = new String(text.getBytes("ISO8859_1")); returntext; } }2.发送邮件[java] view plaincopypackage lius.javamail.ssl; import java.security.Security; import java.util.Date; import java.util.Properties; importjavax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; importjavax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; importjavax.mail.internet.MimeMessage; /** * 使用Gmail 发送邮件* @author Winter Lau */ public class GmailSender { public static void main(String[] args) throws AddressException, MessagingException{ Security.addProvider(new.ssl.internal.ssl.Provider()); final String SSL_FACTORY = ".ssl.SSLSocketFactory";// Get a Properties object Properties props = System.getProperties();props.setProperty("mail.smtp.host", ""); props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.auth", "true"); final String username = "邮箱帐号"; final String password = "邮箱密码"; Session session =Session.getDefaultInstance(props, newAuthenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return newPasswordAuthentication(username,password); }}); // -- Create a new message -- Message msg = newMimeMessage(session); // -- Set the FROM and TO fields -- msg.setFrom(newInternetAddress(username + "@"));msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[收件人地址]",false));msg.setSubject("Hello"); msg.setText("How are you"); msg.setSentDate(new Date());Transport.send(msg); System.out.println("Message sent."); } }现在发送邮件时会发生异常信息,如下:.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatorg.springframework.mail.javamail.JavaMailSenderImpl.do Send(JavaMailSenderImpl.java:419)atorg.springframework.mail.javamail.JavaMailSenderImpl.se nd(JavaMailSenderImpl.java:342)Caused by: javax.mail.MessagingException: Exception reading response;nested exception is:.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatcom.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)atcom.sun.mail.smtp.SMTPTransport.openServer(SMTPTra nsport.java:1260)... 4 moreCaused by: .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetat.ssl.internal.ssl.Alerts.getSSLException(Alerts. java:174)at.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSock etImpl.java:1611)at.ssl.internal.ssl.Handshaker.fatalSE(Handsha ker.java:187)... 8 moreCaused by: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatsun.security.validator.PKIXValidator.doBuild(PKIXValidato r.java:285)atsun.security.validator.PKIXValidator.engineValidate(PKIX Validator.java:191)atsun.security.validator.Validator.validate(Validator.java:218 )at.ssl.internal.ssl.X509TrustManagerImpl.validat e(X509TrustManagerImpl.java:126)at.ssl.internal.ssl.X509TrustManagerImpl.check ServerTrusted(X509TrustManagerImpl.java:209)... 20 moreCaused by:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatsun.security.provider.certpath.SunCertPathBuilder.engine Build(SunCertPathBuilder.java:174)atjava.security.cert.CertPathBuilder.build(CertPathBuilder.ja va:238)atsun.security.validator.PKIXValidator.doBuild(PKIXValidato r.java:280)... 26 more原因是需要保存安装证书官方的QA/products/javamail/FAQ.html#installcertQ: When connecting to my mail server over SSL I get an exception like "unable to find valid certification path to requested target".A: Your server is probably using a test certificate or self-signed certificate instead of a certificate signed by a commercial Certificate Authority. You'll need to install the server's certificate into your trust store. TheInstallCert program will help.使用DOS命令进入InstallCert.java 存放目录运行javac InstallCert.java 将InstallCert.java 编译成 .class文件在运行java InstallCert :465【其中xyz是要使用的mail,例如:】【465是端口号】得到jssecacerts文件后复制到jdk1.6.0_14\jre\lib\security 目录然后再发送邮件就OK了代码都是测试过的,运行没问题。

java使用outlook发邮件

java使用outlook发邮件

java使用outlook发邮件要使用Java发送Outlook邮件,您需要使用JavaMail API和Microsoft Exchange服务器。

以下是一个示例代码,可以帮助您开始:```javaimport java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class SendEmailpublic static void main(String[] args)String port = "587";String password = "your_password";//配置发送邮件的属性Properties props = new Properties(;props.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.smtp.port", port);//创建会话对象Session session = Session.getInstance(props, new javax.mail.Authenticatoprotected javax.mail.PasswordAuthentication getPasswordAuthenticatioreturn new javax.mail.PasswordAuthentication(username, password);}});try// 创建MimeMessage对象Message message = new MimeMessage(session);message.setFrom(new InternetAddress(username));message.setSubject("邮件主题");message.setText("邮件内容");//发送邮件Transport.send(message);System.out.println("邮件发送成功");} catch (Exception e)System.out.println("邮件发送失败");e.printStackTrace(;}}```此示例仅发送简单的文本邮件。

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 组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
String smtpHost = "";
// 发邮件的出发地(发件人的信箱)
String smtpFrom="hxk4613@";
// 发邮件的目的地(收件人信箱)
String smtpTo = "118455555@";
/送邮件服务器的地址。
Properties props = new Properties();
// 发送邮件服务器的地址
props.setProperty("mail.smtp.host", smtpHost);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
}
});
// 创建 邮件的message,message对象包含了邮件众多有的部件,都是封装成了set方法去设置的
MimeMessage msg = new MimeMessage(session);
// 设置发信人
msg.setFrom(new InternetAddress(smtpFrom));
// 通过验证 默认为false
props.setProperty("mail.smtp.auth", "true");
// 设置端口(测试可不设置)
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.socketFactory.port", "25");
final String username = "hxk4613@";// 发送人账户
final String password = "168345";// 发送人密码
// 校验发信人权限
Session session = Session.getDefaultInstance(props,
// 邮件内容
msg.setContent("这是用Java写的发送电子邮件的测试程序!","text/html;charset=UTF-8");
msg.setSentDate(new Date());
// 保存以上工作
msg.saveChanges();
//Transport transport = session.getTransport("smtp");
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
// 收信人
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(smtpTo));
// 邮件标题
msg.setSubject(MimeUtility.encodeText("Java邮件测试", "UTF-8", "B"));
public class Mail extends javax.mail.Authenticator{
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// 发件人使用发邮件的电子信箱服务器
//发送邮件
Transport.send(msg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
相关文档
最新文档