发送邮件,被QQ定义为疑似垃圾邮件,怎么解决这个问题?
由于系统用到了发送邮件给用户的问题,但是出现了这个问题咋办?
奇怪的是,我注册确认的邮件却能正常发出呢。
目前项目没有上线,处于调试阶段。谢谢。
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail {
public static void main(String[] args) {
String user="xxxxxxxxx@qq.com";//帐号邮箱
String password="xxxxxxxx";//帐号密码
String smtphost="SMTP.QQ.COM";//马哥的SMTP服务器
String to="xxxxxxxxx@qq.com";//目标邮箱
Properties properties=new Properties();
properties.put("mail.smtp.host", smtphost);//设置SMTP服务器
properties.put("mail.smtp.auth", "true");//需要SMTP验证
try {
SmtpAuth smtpAuth=new SmtpAuth();//创建授权验证对象
smtpAuth.setUser(user);//设置帐号
smtpAuth.setPassword(password);//设置密码
//邮件会话类Session,跟httpSession类似。传入属性设置properties和授权验证对象
Session session=Session.getDefaultInstance(properties, smtpAuth);
session.setDebug(true);
//MimeMessage类,可以用来发送html格式邮件
MimeMessage mimeMessage=new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress(user));//设置发送方
//设置接收方
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
//设置主题,问题关键所在
mimeMessage.setSubject("马 哥,我不是垃圾");
//设置邮件内容,格式为html
mimeMessage.setContent("<h1><a href='http://www.qq.com'>www.qq.com</a></h1>", "text/html;charset=gb2312");
//设置发送时间
mimeMessage.setSentDate(new Date());
//保存消息头和内容的修改
mimeMessage.saveChanges();
//SMTP协议传输类
Transport transport=session.getTransport("smtp");
//连接到马哥的SMTP服务器
transport.connect(smtphost, user, password);
//发送邮件,每隔15秒发送一次,发送20次
for(int i=0;i<20;i++){
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
Thread.sleep(15*1000);
}
//关闭
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义一个SMTP授权验证类
static class SmtpAuth extends Authenticator{
String user;//帐号
String password;//密码
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
public void setUser(String user) {
this.user = user;
}
public void setPassword(String password) {
this.password = password;
}
}
}