- /*
- * 邮件发送类
- */
- public class MailSenderUtil{
- /**
- * 以HTML格式发送邮件,可带附件,本方法可作为对外接口提供。
- * @param mailInfo 待发送的邮件信息
- * @throws MessagingException
- * @throws AddressException
- * @throws UnsupportedEncodingException
- */
- public static void sendHtmlMailWithLocalAttach(MailSenderInfo mailInfo) throws AddressException, MessagingException, UnsupportedEncodingException {
- // 判断是否需要身份认证
- MyAuthenticator authenticator = null;
- // 如果需要身份认证,则创建一个密码验证器
- if (mailInfo.isValidate()) {
- authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Properties pro = mailInfo.getProperties();
- Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
- // 根据session创建一个邮件消息
- Message mailMessage = new MimeMessage(sendMailSession);
- // 设置发送人
- mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
- // 设置收件人
- String[] toAddress = mailInfo.getToAddress();
- if(toAddress == null || toAddress.length < 1){
- throw new RuntimeException("收件人不得为空!");
- }
- for (int i = 0; i < toAddress.length; i++) {
- mailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress[i]));
- }
- //设置抄送人
- String[] ccAddress = mailInfo.getCcAddress();
- if(ccAddress != null && ccAddress.length > 0){
- for (int i = 0; i < ccAddress.length; i++) {
- mailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress(ccAddress[i]));
- }
- }
- // 设置邮件消息的主题
- mailMessage.setSubject(mailInfo.getTitle());
- // 设置邮件消息发送的时间
- mailMessage.setSentDate(new Date());
- // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
- Multipart mainPart = new MimeMultipart();
- // 创建一个包含HTML内容的MimeBodyPart
- BodyPart html = new MimeBodyPart();
- // 设置HTML内容
- html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
- mainPart.addBodyPart(html);
- // 添加附件
- addAttachment(mailInfo, mainPart);
- // 将MiniMultipart对象设置为邮件内容
- mailMessage.setContent(mainPart);
- // 发送邮件
- Transport.send(mailMessage);
- }
- /*
- * 添加邮件附件,用本地的文件作为附件
- */
- private static void addAttachment(MailSenderInfo mailInfo,Multipart mainPart) throws MessagingException, UnsupportedEncodingException{
- String[] attachFileNames = mailInfo.getAttachFileNames();
- if(attachFileNames != null && attachFileNames.length > 0){
- for (int i = 0; i < attachFileNames.length; i++) {
- MimeBodyPart mdp = new MimeBodyPart();
- // FileDataSource/DataHandler 会用到
- // activation-1.1.jar,jdk6中已经包含了该jar中内容,不再需要单独下载
- // activation-1.1.jar
- FileDataSource fds = new FileDataSource(attachFileNames[i]);
- DataHandler dh = new DataHandler(fds);
- mdp.setDataHandler(dh);
- // 保持附件名称与原文件名称一致的写法,MimeUtility.encodeText()可以解决中文附件乱码。
- mdp.setFileName(MimeUtility.encodeText(fds.getName()));
- mainPart.addBodyPart(mdp);
- }
- }
- }
- }
- /**
- * MyAuthenticator bean
- */
- class MyAuthenticator extends Authenticator{
- String userName=null;
- String password=null;
- public MyAuthenticator(){
- }
- public MyAuthenticator(String username, String password) {
- this.userName = username;
- this.password = password;
- }
- protected PasswordAuthentication getPasswordAuthentication(){
- return new PasswordAuthentication(userName, password);
- }
- }
- /**
- * MailSenderInfo bean
- */
- class MailSenderInfo {
- // 发送邮件的服务器的IP和端口
- private String mailServerHost;
- private String mailServerPort;;
- // 邮件发送者的地址
- private String fromAddress;
- //接收人地址
- private String[] toAddress;
- //抄送人地址
- private String[] ccAddress;
- // 登陆邮件发送服务器的用户名和密码
- private String userName;
- private String password;
- // 是否需要身份验证
- private boolean validate = false;
- // 邮件主题
- private String title;
- // 邮件的文本内容
- private String content;
- // 邮件附件的文件名,含磁盘物理路径,如D:\\Desktop\\index.html
- private String[] attachFileNames;
- /**
- * 获得邮件会话属性
- * @return Properties
- */
- 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[] getCcAddress() {
- return ccAddress;
- }
- public void setCcAddress(String[] ccAddress) {
- this.ccAddress = ccAddress;
- }
- 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) {
- this.userName = userName;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String textContent) {
- this.content = textContent;
- }
- }
使用
- public static void main(String[] args) throws AddressException, UnsupportedEncodingException, MessagingException {
- MailSenderInfo mail = new MailSenderInfo();
- //设置附件
- mail.setAttachFileNames(new String[]{
- "D:\\Desktop\\首页.jpg",
- "D:\\Desktop\\测试账户.java"
- });
- //设置抄送人
- mail.setCcAddress(new String[]{"1@1.com","2@2.com"});
- //设置正文
- mail.setContent("<h3>http://www.baidu.com</h3>");
- //设置发件邮箱
- mail.setFromAddress("33@33.com");
- //设置发件邮箱密码
- mail.setPassword("123456");
- //设置邮件服务器
- mail.setMailServerHost("mail.XX.com");
- mail.setMailServerPort("25");
- //设置邮件主题
- mail.setTitle("我是主题");
- //设置收件人
- mail.setToAddress(new String[]{"44@44.com"});
- //设置用户名
- mail.setUserName("33");
- mail.setValidate(true);
- MailSenderUtil.sendHtmlMailWithLocalAttach(mail);
- }
有些邮件服务器中,username需要写全称(即包含@及之后的数据,如33@163.com),否则会报错:
javax.mail.AuthenticationFailedException: 535 5.7.0 Error: authentication failed: authentication failure
相关推荐
javamail smtp imap收发电子邮件,发送附件,联系人管理!
javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
资源包括邮件的发送、邮件的接收、查看邮件总数量和未读邮件数以及查看未读邮件并标记已读,还有我自己编写的简单的文档。希望能帮助需要帮助的筒子们
介绍了使用javamail发送电子邮件时所需要使用的类,还有代码示例
javamail实现的邮件发送功能,内含完整代码和jar包,邮件服务协议smtp,pop3,如使用imap等其他协议也可参考此代码调整或询问我
// 设定发邮件的人 msg.setFrom(new InternetAddress(From)); // 设定收信人的信箱 address = InternetAddress.parse(to, false); msg.setRecipients(Message.RecipientType.TO, address); // 设定信中的...
配置好用户名密码以及SMTP服务器就可以直接运行。已包含相关jar
(2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开Javamail邮件收发系统...
能模拟电子邮件的发送,包括qq、sina(新浪)、163等邮件,使用SMTP协议(smtp.qq.com smtp.sina.com smtp.163.com)
Spring整合JavaMail发送qq邮件,极简单的例子。看完就会。。。
android使用javamail发送邮件jar包,可以直接导入到Android studio使用
导入到Myeclipse 即可运行 测试使用的是QQ邮箱 在application.xml中配置的发送邮箱 要到邮箱中设置 POP3/SMTP服务为开。项目不部署到tomcat后启动服务,然后运行test.java 就发送了,。绝对可以发送
pop3不加密方式收信、imap不加密方式收信、smtp不加密发信、smtp加密发信
SMTP(简单邮件传输协议)是专门用来发送邮件的。POP(邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。 本文主要可分为四个部分。第一部分介绍了Javamail...
Javamail API是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它支持各种因特网邮件协议,包括:SMTP、POP、IMAP、MIME、NNTP、S/MIME及其它协议。
javamail实现的邮件发送功能,内含完整代码和jar包,邮件服务协议smtp,pop3,用javamail发送邮件,支持QQ,163邮件发送。相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不一样的。
本资源是利用javamail实现的一个发送邮件的小例子。本人亲测成功!有需要的可以来下载看看。不过有一些邮箱的smtp和pop3需要自己设置一下
基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,...(2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件
初学javamail的时候,弄了好久都没成功的例子,现在成功了和大家分享下,希望对刚入门的...本例是用qq邮箱运行的,所以发送端的邮箱smtp服务必须开启,接受端无需任何设置!导入成功后,直接运行SendAccountFileTask类