簡體   English   中英

從多個電子郵件帳戶發送JavaMail

[英]Sending JavaMail from Multiple Email Accounts

我有一個程序,我有許多用戶,每個用戶可以從不同的電子郵件帳戶發送電子郵件。

當我嘗試使用JavaMail發送電子郵件時。 它們總是由首先發送電子郵件的用戶的帳戶發送出去。

user1 = new User("dummy-email@gmail.com", "dumpass12");
user2 = new User("second-dummy@gmail.com", "secondpass12");

user1.sendMail(toAddress, subject, body);
user2.sendMail(toAddress, subject, body);

現在,當我做這樣的事情時,第二個用戶將發送一條消息,但它將作為user1來自SAME郵箱(即兩條消息都來自dummy-email@gmail.com)。

有人可以向我解釋為什么會這樣嗎? 我必須以某種方式關閉連接嗎? 如何發送這兩封電子郵件並讓它們來自不同的帳戶? 請幫我。

這是我的代碼,它實際上發送連接到用戶的Gmail帳戶的電子郵件。

public void sendMail(String toAddress, String subject, String body){     
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");

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

        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(getUsername()));
            message.setRecipients(Message.RecipientType.TO, 
                InternetAddress.parse(toAddress));
            message.setSubject(subject);
            message.setContent(body, "text/html");

            Transport.send(message);


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

用Session.getInstance()替換Session.getDefaultInstance()。 要了解原因,請仔細閱讀這些方法的javadoc。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM