代码之家  ›  专栏  ›  技术社区  ›  Allain Lalonde

如何从Java发送SMTP消息?[复制品]

  •  24
  • Allain Lalonde  · 技术社区  · 16 年前

    可能重复:
    How do you send email from a Java app using Gmail?

    如何从Java发送SMTP消息?

    6 回复  |  直到 7 年前
        1
  •  35
  •   community wiki 4 revs, 2 users 97% tovare    7 年前

    下面是gmail smtp的一个示例:

    import java.io.*;
    import java.net.InetAddress;
    import java.util.Properties;
    import java.util.Date;
    
    import javax.mail.*;
    
    import javax.mail.internet.*;
    
    import com.sun.mail.smtp.*;
    
    
    public class Distribution {
    
        public static void main(String args[]) throws Exception {
            Properties props = System.getProperties();
            props.put("mail.smtps.host","smtp.gmail.com");
            props.put("mail.smtps.auth","true");
            Session session = Session.getInstance(props, null);
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress("mail@tovare.com"));;
            msg.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("tov.are.jacobsen@iss.no", false));
            msg.setSubject("Heisann "+System.currentTimeMillis());
            msg.setText("Med vennlig hilsennTov Are Jacobsen");
            msg.setHeader("X-Mailer", "Tov Are's program");
            msg.setSentDate(new Date());
            SMTPTransport t =
                (SMTPTransport)session.getTransport("smtps");
            t.connect("smtp.gmail.com", "admin@tovare.com", "<insert password here>");
            t.sendMessage(msg, msg.getAllRecipients());
            System.out.println("Response: " + t.getLastServerResponse());
            t.close();
        }
    }
    

    现在,只有当您希望将项目依赖性保持在最低限度时才这样做,否则我可以热情地推荐使用Apache中的类。

    http://commons.apache.org/email/

    当做

    托夫是雅各布森

        2
  •  6
  •   brad    7 年前

    另一种方法是使用阿司匹林( https://github.com/masukomi/aspirin 像这样:

    MailQue.queMail(MimeMessage message)
    

    …在按照上述方式构建了您的MimeMessage之后。

    阿司匹林 一个SMTP“服务器”,因此您不必配置它。但是请注意,向一组广泛的收件人发送电子邮件并不像看上去那么简单,因为接收邮件服务器和客户端应用程序的垃圾邮件过滤规则有很多不同。

        3
  •  3
  •   Community Egal    7 年前

    请看这个帖子

    How can I send an email by Java application using GMail, Yahoo, or Hotmail?

    它是特定于Gmail的,但您可以替换您的SMTP凭证。

        4
  •  2
  •   Gray droiddeveloper    8 年前

    JavaMail API 以及相关的javadocs。

        5
  •  1
  •   Jorge Ferreira    16 年前

    在Java实践中查看下面的教程。

    http://www.javapractices.com/topic/TopicAction.do?Id=144

        6
  •  0
  •   Emil Sierżęga Awanish Prakash    11 年前
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*; 
    
    public void postMail(String recipients[], String subject,
        String message , String from) throws MessagingException {
    
        //Set the host smtp address
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.jcom.net");
    
        // create some properties and get the default Session
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(false);
    
        // create a message
        Message msg = new MimeMessage(session);
    
        // set the from and to address
        InternetAddress addressFrom = new InternetAddress(from);
        msg.setFrom(addressFrom);
    
        InternetAddress[] addressTo = new InternetAddress[recipients.length]; 
        for (int i = 0; i < recipients.length; i++) {
            addressTo[i] = new InternetAddress(recipients[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, addressTo);
    
        // Optional : You can also set your custom headers in the Email if you Want
        msg.addHeader("MyHeaderName", "myHeaderValue");
    
        // Setting the Subject and Content Type
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }