Javamail配置说明

时间:2012-12-03 07:55:56

标签: javamail

通过我的应用程序使用Javamail API,如果我想在任何两个外部电子邮件地址之间发送电子邮件,请说 gmail-> yahoo yahoo-> gmail 或任何其他不使用身份验证机制的电子邮件帐户如何配置 mail.smtp.host 属性?

配置javamail属性以在任意两个外部电子邮件地址之间发送电子邮件的正确方法是什么?

发送邮件的示例代码如下:

Session session = Session.getDefaultInstance(new Properties(),null);
MimeMessage message = new MimeMessage(session);   
message.setFrom(new InternetAddress("test@gmail.com"));  
InternetAddress[] toAddress = {new InternetAddress("test@yahoo.com")};  
message.setRecipients(Message.RecipientType.TO, toAddress);  
message.setSubject("test mail");  message.setText("test body");  
Transport.send(message);

2 个答案:

答案 0 :(得分:0)

大多数公共邮件服务器都需要身份验证如果您想在没有身份验证的情况下执行此操作,则需要运行自己的邮件服务器。

答案 1 :(得分:0)

这是为了gmail,试试吧。您需要mail.jar

public static void main(String[] args) {
    final String username = "yourId@gmail.com";
    final String password = "your-pwd";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("yourId@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("some-mail@gmail.com"));
        message.setSubject("A Mail Subject");
        message.setText("Hey I'm sending mail using java api");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

修改:

Link to download Java mail Api和mail.jar