繁体   English   中英

使用Javamail发送电子邮件

[英]Sending email using Javamail

我正在尝试使用我几天前使用Java邮件api注册的GoDaddy电子邮件主机发送邮件,但事实证明它并不容易实现,而且我得到了,这个错误:

Could not connect to SMTP host: smtpout.asia.secureserver.net, port: 80, response: -1

我尝试过端口3535,465,587,25,但仍然得到相同的错误。 下面相同的代码已经过测试,可以使用Gmail发送电子邮件,并添加了此代码(在这种情况下我已省略):

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

MailSender.java:

   public class MailSender {

        private static String HOST = "smtpout.asia.secureserver.net";
        private static String PORT = "80";

        public static void sendMail(final Mail mail) throws MailException {

            EmailValidator validtor = new EmailValidator();

            if (validtor.validate(mail.getReceipient())) {
                Properties props = new Properties();
                props.put("mail.smtp.host", HOST);
                props.put("mail.smtp.socketFactory.port", PORT);           
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.port", PORT);

                Session session = Session.getDefaultInstance(props,
                        new javax.mail.Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(mail.getUsername(),mail.getPassword());
                            }
                        });

                try {
                    Message message = new MimeMessage(session);
                    message.setFrom(new InternetAddress(mail.getSender()));
                    message.setRecipients(Message.RecipientType.TO,
                            InternetAddress.parse(mail.getReceipient()));
                    message.setSubject(mail.getSubject());           
                    message.setText(mail.getBody());
                    Transport.send(message);
                    System.out.println("OK");

                } catch (MessagingException e) {
                    throw new MailException(e.getMessage());
                }           
            } else {
                throw new MailException("Email address not valid.");
            }       
        }
    }

此类中的Mail参数包含所有其他邮件信息,用户名/密码,发件人和收件人电子邮件地址字符串,经过测试可与Outlook和Thunderbird等电子邮件客户端一起使用。

端口80用于HTTP。

将其更改为465或587。

(请参阅GoDaddy文档以获取正确的端口)

显然,问题不在于Java mail api,而在GoDaddy服务器上,我已经咨询了他们的技术支持并且现在工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM