java程序发送邮件以及可能出现的问题
来源:互联网 发布:苹果mac怎么压缩文件 编辑:程序博客网 时间:2024/06/10 20:20
首先是代码的实现
第一种方式
import java.util.Date;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 邮件发送工具类
* @author xxxxx
* @email xxxx@163.com
* @date 2013-3-31 下午5:08:16
* @version 1.0
*/
public class EmailTools {
/**
* 邮件发送的方法
* @param to 收件人
* @param subject 主题
* @param content 内容
* @return 成功或失败
*/
public static boolean send(String to, String subject, String content){
// 第一步:创建Session
Properties props = new Properties();
//指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议)
props.put("mail.transport.protocol", "smtp");
//指定邮件服务器
props.put("mail.host","smtp.126.com");
//指定邮件的发送人(您用来发送邮件的服务器,比如您的163\sina等邮箱)
props.put("mail.from", "xxxxxxxxxxxxx@126.com");
Session session = Session.getDefaultInstance(props);
// 开启调试模式
session.setDebug(true);
try {
// 第二步:获取邮件发送对象
Transport transport = session.getTransport();
// 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码
transport.connect("lxxxxxxxxx", "orpwofqixxxxxxz");
// 第三步:创建邮件消息体
MimeMessage message = new MimeMessage(session);
//邮件的主题
message.setSubject(subject);
//邮件的内容
message.setContent(content, "text/html;charset=utf-8");
//邮件发送时间
message.setSentDate(new Date());
// 第四步:发送邮件
//第一个参数:邮件的消息体
//第二个参数:邮件的接收人,多个接收人用逗号隔开(test1@163.com,test2@sina.com)
transport.sendMessage(message, InternetAddress.parse(to));
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
//您要发送给谁,标题,内容
EmailTools email = new EmailTools();
boolean result = email.send("xxxxxxxx@qq.com", "你好", "你好你好你好你好你好你好你好你好");
if(result){
System.out.print("done");
}
}
}
第二种方式
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail {
private static InternetAddress[] internetAddresses;
public static void getInternetAddress(){
String sendTo = "xxxxxxxx@qq.com";
if (!"".equals(sendTo)) {
String[] addresses = sendTo.split(";");
internetAddresses = new InternetAddress[addresses.length];
for (int i = 0; i < addresses.length; i++) {
InternetAddress addr = null;
try {
addr = new InternetAddress(addresses[i]);
} catch (AddressException e) {
e.printStackTrace();
}
if (addr != null)
internetAddresses[i] = addr;
}
}
}
public static void sendWarnEmails(String content) {
getInternetAddress();
System.out.print("\n*************\n");
System.out.print(internetAddresses);
System.out.print("\n*************\n");
String title = "加油卡充值系统预警";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
// props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.126.com");
props.put("mail.smtp.port", "25");
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("lxxxxxxxxxx@126.com", "orpwofqiiqlvxxz");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("lxxxxxxxxxxx@126.com"));
message.setRecipients(Message.RecipientType.TO, internetAddresses);
message.setSubject(title);
message.setText(content);
System.out.print("\n*******1*******\n");
Transport.send(message);
System.out.print("\n*******2*******\n");
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("\n***************\n");
SendEmail email = new SendEmail();
email.sendWarnEmails("hello word");
}
}
以上两种方式需要的jar包是mail-1.4.5.jar
可能存在的问题:在测试的时候如果输出栏中提示:javax.mail.AuthenticationFailedException: 535 Error: authentication failed
可能1:用户名称或者密码错误
可能2:指定的邮件服务器没写正确
可能3:你自己的发送邮箱没有给客户端授权(这个概率最大),这是你可以登陆网页邮箱,将自己的邮箱中客户端授权打开(这时要记住发给自己的客户端授权密码(这个只针对126邮箱,其他邮箱具体情况自己看着准备))并且记得开启SMTP,POP3,IMAP服务。这样再重新测试一次应该就可以成功了。
- java程序发送邮件以及可能出现的问题
- javaMail编写发送邮件的程序,以及遇到的问题
- Java发送邮件简单实现以及问题的解决
- JAVA发送邮件的程序
- 发送邮件遇到的问题以及解决办法
- Java的邮件发送、接收以及删除
- Java发送邮件程序
- java程序发送邮件
- java发送邮件程序
- Java邮件发送程序
- java程序发送邮件
- java发送邮件程序
- Java程序发送邮件
- java程序发送邮件
- java发送邮件程序
- Linux使用mail功能自动发送邮件程序以及经常遇到的问题
- java开发的邮件发送程序
- 基于SMTP的JAVA邮件发送程序
- 手机卫士-11
- 后考研时代的前端学习
- 导弹拦截(最长下降子序列)变形
- 牛二
- 71. PHP 抽象类
- java程序发送邮件以及可能出现的问题
- HDU 3714 Error Curves(3分)
- JAVA:运算符与表达式
- android 文本输入框文字改变监听-输入值显示,没有值删除按钮消失
- Python的os和shutil模块
- <iostream>和<iostream.h>
- 行内元素 水平对齐的简单方法
- The 23 Gang of Four Design Patterns (Cheat Sheet)(zz)
- 第五周项目二——对象作为数据成员