从多个电子邮件帐户发送JavaMail
我有一个程序,我有很多用户,每个人都可以从不同的电子邮件帐户发送电子邮件 当我尝试使用JavaMail发送电子邮件时。它们总是通过首先发送电子邮件的用户的帐户发送出去从多个电子邮件帐户发送JavaMail,java,gmail,jakarta-mail,Java,Gmail,Jakarta Mail,我有一个程序,我有很多用户,每个人都可以从不同的电子邮件帐户发送电子邮件 当我尝试使用JavaMail发送电子邮件时。它们总是通过首先发送电子邮件的用户的帐户发送出去 user1 = new User("dummy-email@gmail.com", "dumpass12"); user2 = new User("second-dummy@gmail.com", "secondpass12"); user1.sendMail(toAddress, subject, body); user2.s
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相同的邮箱,即两条消息都来自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.getDefaultInstance替换为Session.getInstance。要了解原因,请仔细阅读这些方法的javadocs。用Session.getInstance替换Session.getDefaultInstance。为了理解原因,仔细阅读这些方法的javadocs。如果看不到相关代码getUsername和存储用户地址的成员定义,没有人能帮助你。如果看不到相关代码getUsername和存储用户地址的成员定义,没有人能帮助你。没有什么比让Bill Shannon回答更好的了您的JavaMail问题。嘿,比尔,为什么InternetHeader是最后一节课InternetHeader是final的,因为InternetHeader依赖于InternetHeader的实现细节,而且它只由InternetHeader类使用,这似乎是合理的。按照这种逻辑,不是所有的类都是final的吗?如果您打算允许子类化,那么拥有几个最终类会使事情变得非常困难……JavaMail并不依赖于所有类的实现细节。其中很多都是为子类化而设计的,没有什么比让Bill Shannon回答您的JavaMail问题更好的了。嘿,比尔,为什么InternetHeader是最后一节课InternetHeader是final的,因为InternetHeader依赖于InternetHeader的实现细节,而且它只由InternetHeader类使用,这似乎是合理的。按照这种逻辑,不是所有的类都是final的吗?如果您打算允许子类化,那么拥有几个最终类会使事情变得非常困难……JavaMail并不依赖于所有类的实现细节。其中许多是为子类化而设计的。