带有所需“from”名称的java中的邮件

时间:2014-01-28 08:02:43

标签: java email javamail html-email

是否有人知道如何在Java中发送包含所需“from”名称的电子邮件?

我有一个通过gmail发送邮件的代码。使用gmail的smtp设置,我能够做到这一点。但是,使用相同的smtp设置,我可以从不存在的邮件ID发送电子邮件吗?

例如: 我有一个代码,它从现有用户名发送电子邮件(比如abc@gmail.com),接收者从abc@gmail.com收到电子邮件。但是,我想要的是,我们可以发送一封来自“a@def.com”的邮件吗?那么,用户从“a@def.com”收到邮件?

这可能吗?

3 个答案:

答案 0 :(得分:2)

虽然API可能允许您这样做,但您的困难将与SMTP服务器的配置有关。没有理智的SMTP服务器允许您控制通过该SMTP服务器发送的电子邮件的“发件人”电子邮件地址 - 这是使您的SMTP服务器成为垃圾邮件发送者的简单网关的第一步。正确的SMTP服务器(包括Google)会将“发件人”电子邮件地址设置为与您登录的电子邮件地址相同。

答案 1 :(得分:0)

您可以明确设置它。但同样取决于接受FROM地址的SMTP服务器。据我所知,大多数SMTP都配置为阻止不属于其域的发件人电子邮件ID。如果它们没有这样配置,则接收邮件客户端可以过滤该消息,以便不从接收服务器识别发送者电子邮件ID并将其设置为垃圾邮件。这也会导致SMTP域被许多其他接收域阻止。

因此不建议遵守。

答案 2 :(得分:0)

您需要mail.jaractivation.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
        }                   
    }
.......
}