java - 如何在 Gmail SMTP 中指定显示名称?

标签 java jakarta-mail

举个例子可以更好地解释我的问题:

如果“Mark Jones”拥有 xyz@gmail.com 并通过传统方法(撰写)向某人发送邮件,则收件人会收到一封标题为“Mark Jones”的邮件,后跟主题。但通过 Gmail SMTP 发送的同一封邮件的标题为“xyz”,后跟主题。

我正在使用 javax.mail 库作为 SMTP。即使我通过 Java SMTP 发送,我也希望显示“Mark Jones”而不是“xyz”。有什么办法可以达到这个目的吗?
以下是我当前使用的代码:

    System.setProperty("java.net.preferIPv4Stack" , "true");
    Properties props = new Properties();
    props.put("mail.smtps.user", "xyz@gmail.com");
    props.put("mail.smtps.host", "smtp.gmail.com");
    props.put("mail.smtps.port", "465");
    props.put("mail.smtps.starttls.enable", "true");
    props.put("mail.smtps.debug", "true");
    props.put("mail.smtps.auth", "true");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("xyz@gmail.com", "password");
        }
    });
    MimeMessage msg = new MimeMessage(session);
    try {
        msg.setSubject(this.subject);
        msg.setFrom(new InternetAddress("xyz@gmail.com"));
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(this.to));
        msg.setText(this.body);
        try (Transport transport = session.getTransport("smtps")) {
            transport.connect("smtp.gmail.com", Integer.valueOf("465"), "Mark Jones", "password");
            transport.sendMessage(msg, msg.getAllRecipients());
        }
    } catch (AddressException e) {
        e.printStackTrace();
    } catch (MessagingException e) {
        e.printStackTrace();
    }

最佳答案

Bill Shannon建议,以下代码可以解决问题

try{ 
    msg.setFrom(new InternetAddress("xyz@gmail.com","Mark Jones")); 
}catch(UnsupportedEncodingException e){
    e.printStackTrace();
}

关于java - 如何在 Gmail SMTP 中指定显示名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59504477/

相关文章:

java - Realm 数据库问题。 - 没有找到默认的 Realm 配置 -

java - 如何将打印流重定向到 JTextArea?

java - 发送邮件时出错 - ConnectException

java - 发送前查找电子邮件大小

JavaFx 我的模型如何更新 View ?

java - 使用自签名证书连接到 SSL 服务器的客户端

java - 无法使用 JavaMail 删除邮件

java - 尝试发送验证邮件时收到来自谷歌的警告

java - 为什么 JavaMail 连接超时时间过长

java - Spring数据 Autowiring : Two bean candidates using @Autowired