我写的JavaMail代码,可以用163免费邮箱发邮件,却不能用163免费企业邮箱发送

时间:2022-01-05 18:10:40
代码如下

            String host = "smtp.ym.163.com"; // 163免费企业邮箱的smtp服务器
String from = "myname@****.com"; // 我的企业邮箱地址
String to = "receiver@***.com"; // 邮件要发送到的邮箱地址
String username = "myname@****.com"; 

String password = "secret"; //

Properties props = new Properties();


props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");

SmtpAuth smtpAuth = new SmtpAuth(username, password);
Session session = Session.getDefaultInstance(props, smtpAuth);


session.setDebug(true);

String msg = "hello";
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
BodyPart mdp = new MimeBodyPart();
mdp.setContent(msg, "text/html;charset=gb2312");
Multipart mm = new MimeMultipart();
mm.addBodyPart(mdp);
message.setContent(mm);

message.setSubject("这是一个好消息");
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();



结果显示:
我写的JavaMail代码,可以用163免费邮箱发邮件,却不能用163免费企业邮箱发送

但是我用免费163个人邮箱账户发送,就可以。这是为什么呢?网上有说是网易企业邮箱的服务器地址官方给的不对。但是也没说正确的是什么。求大神指导!!

4 个解决方案

#1


企业邮箱和免费邮箱应该是两套不同邮件系统,他们所有的服务器地址也有所区别,如果百度不到的话直接电话联系网易企业邮箱应该应该会告诉你

#2


smtp.ym.163.com这个地址是没错的,我们的邮件服务用的也是这个地址,

/**
 * 发送html邮件
 * @param from 发件人
 * @param to 收件人
 * @param subject 邮件主题
 * @param text 邮件内容
 * @param host 邮件服务器类型(请传入smtp类型的邮件服务器)
 * @param username 登录用户名
 * @param password 登录密码
 * @throws MessagingException 
 */
public void sendHtmlMail(String from, String []to, String subject, String text, String host, String username, 
String password) throws MessagingException
{
//设置服务器验证信息
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.timeout", "30000");

//设置邮件内容
JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();
MimeMessage message = javaMailSend.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");

messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(text, true);

//设置邮件服务器登录信息
javaMailSend.setHost(host);
javaMailSend.setUsername(username);
javaMailSend.setPassword(password);
javaMailSend.setJavaMailProperties(prop);

javaMailSend.send(message);   
}

这是我之前写的发送邮件的代码, 项目中也在使用,希望能对楼主有所帮助

#3


根据报的错误来看
是认证失败了
可能是用户名或密码错误
或者是你163企业邮箱的POP3/SMTP服务没有开启!
再或者其他什么原因
我写的JavaMail代码,可以用163免费邮箱发邮件,却不能用163免费企业邮箱发送

#4


我的是开始可以发,但是一段时间之后就发不了了!重启服务器就好了!

#1


企业邮箱和免费邮箱应该是两套不同邮件系统,他们所有的服务器地址也有所区别,如果百度不到的话直接电话联系网易企业邮箱应该应该会告诉你

#2


smtp.ym.163.com这个地址是没错的,我们的邮件服务用的也是这个地址,

/**
 * 发送html邮件
 * @param from 发件人
 * @param to 收件人
 * @param subject 邮件主题
 * @param text 邮件内容
 * @param host 邮件服务器类型(请传入smtp类型的邮件服务器)
 * @param username 登录用户名
 * @param password 登录密码
 * @throws MessagingException 
 */
public void sendHtmlMail(String from, String []to, String subject, String text, String host, String username, 
String password) throws MessagingException
{
//设置服务器验证信息
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.timeout", "30000");

//设置邮件内容
JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();
MimeMessage message = javaMailSend.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");

messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(text, true);

//设置邮件服务器登录信息
javaMailSend.setHost(host);
javaMailSend.setUsername(username);
javaMailSend.setPassword(password);
javaMailSend.setJavaMailProperties(prop);

javaMailSend.send(message);   
}

这是我之前写的发送邮件的代码, 项目中也在使用,希望能对楼主有所帮助

#3


根据报的错误来看
是认证失败了
可能是用户名或密码错误
或者是你163企业邮箱的POP3/SMTP服务没有开启!
再或者其他什么原因
我写的JavaMail代码,可以用163免费邮箱发邮件,却不能用163免费企业邮箱发送

#4


我的是开始可以发,但是一段时间之后就发不了了!重启服务器就好了!