是否有人知道如何在Java中发送包含所需“from”名称的电子邮件?
我有一个通过gmail发送邮件的代码。使用gmail的smtp设置,我能够做到这一点。但是,使用相同的smtp设置,我可以从不存在的邮件ID发送电子邮件吗?
例如: 我有一个代码,它从现有用户名发送电子邮件(比如abc@gmail.com),接收者从abc@gmail.com收到电子邮件。但是,我想要的是,我们可以发送一封来自“a@def.com”的邮件吗?那么,用户从“a@def.com”收到邮件?
这可能吗?
答案 0 :(得分:2)
虽然API可能允许您这样做,但您的困难将与SMTP服务器的配置有关。没有理智的SMTP服务器允许您控制通过该SMTP服务器发送的电子邮件的“发件人”电子邮件地址 - 这是使您的SMTP服务器成为垃圾邮件发送者的简单网关的第一步。正确的SMTP服务器(包括Google)会将“发件人”电子邮件地址设置为与您登录的电子邮件地址相同。
答案 1 :(得分:0)
您可以明确设置它。但同样取决于接受FROM
地址的SMTP服务器。据我所知,大多数SMTP都配置为阻止不属于其域的发件人电子邮件ID。如果它们没有这样配置,则接收邮件客户端可以过滤该消息,以便不从接收服务器识别发送者电子邮件ID并将其设置为垃圾邮件。这也会导致SMTP域被许多其他接收域阻止。
因此不建议遵守。
答案 2 :(得分:0)
您需要mail.jar
和activation.jar
。在我的情况下,我使用下面的方法实现
import java.util.HashMap;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.Transport;
class ABC{
......
private void sendSimpleEmail(String to,String subject,String cc,String bcc,String message,HashMap mailMap)
{
String smtpHost=mailMap.get("mailhost").toString();
String smtpPort=mailMap.get("mailport").toString();
String authrequired=mailMap.get("auth").toString();
String from=mailMap.get("mailsendfrom").toString();
String SSLCheck=mailMap.get("sslconfig").toString();
/* For Authentication */
String password=mailMap.get("mailpwd").toString();
String fromUsername=mailMap.get("mailusername").toString();
/* For Authentication Ends*/
Properties props = new Properties();
props.put("mail.smtp.auth", authrequired);
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.port", smtpPort);
Session session=Session.getDefaultInstance(props);
Message simpleMessage = new MimeMessage(session);
try {
InternetAddress fromAddress = new InternetAddress(from);
InternetAddress toAddress = new InternetAddress(to);
} catch (AddressException e) {
//Exception
}
try {
simpleMessage.setFrom(fromAddress);
simpleMessage.setRecipient(RecipientType.TO, toAddress);
simpleMessage.setSubject(subject);
simpleMessage.setText(message);
Transport.send(simpleMessage);
} catch (MessagingException e) {
// TODO Auto-generated catch block
}
}
.......
}