我使用以下代码从我的应用程序发送电子邮件:
MimeMessage message = new MimeMessage(session);
String encodingOptions = "text/html; charset=UTF-8";
message.setHeader("Content-Type", encodingOptions);
message.setFrom(new InternetAddress(fromEmailAddress));
String[] toAddressArr = emailMsg.getTo().split(CommonConstants.SEMI_COLON);
for (String srtAddress : toAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressToList.add(ia);
}
InternetAddress[] addressTo = new InternetAddress[addressToList.size()];
message.setRecipients(MimeMessage.RecipientType.TO, addressToList.toArray(addressTo));
if (!Util.isNullOrBlank(emailMsg.getCc())) {
String[] copyAddressArr = emailMsg.getCc().split(CommonConstants.SEMI_COLON);
ArrayList<InternetAddress> addressCopyList = new ArrayList<>();
for (String srtAddress : copyAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressCopyList.add(ia);
}
InternetAddress[] addressCopy = new InternetAddress[addressCopyList.size()];
message.setRecipients(MimeMessage.RecipientType.CC, addressCopyList.toArray(addressCopy));
}
if (!Util.isNullOrBlank(emailMsg.getBcc())) {
String[] bccAddressArr = emailMsg.getBcc().split(CommonConstants.SEMI_COLON);
ArrayList<InternetAddress> addressBccList = new ArrayList<>();
for (String srtAddress : bccAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressBccList.add(ia);
}
InternetAddress[] addressBcc = new InternetAddress[addressBccList.size()];
message.setRecipients(MimeMessage.RecipientType.BCC, addressBccList.toArray(addressBcc));
}
message.setSubject(emailMsg.getSubject(), "UTF-8");
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(emailMsg.getMessage());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
}
}
使用上述代码,我可以将电子邮件发送到收件人的电子邮件地址,但是,主题字段为空,收件人字段也为空,而所有收件人都显示在电子邮件的密件抄送字段中。此外,附件以字节字符串的形式出现,而不是可下载的pdf文件。下面是一个示例:
user@gmail.com到密件抄送:user@outlook.com,密件抄送:user@domain.com
------=\u Part\u 0\u 455461077.1587067667930内容类型:文本/普通;charset=美国ascii内容传输编码:7bit
亲爱的先生,
状态报告
如需进一步查询,请致电以下任何一个号码与我们的客户服务部门联系:01-255xxxx和01-270xxxx。
谨致问候。对于XYZ公司-----------=\u Part\u 0\u 455461077.1587067667930内容类型:文本/普通;名称=37855。pdf内容传输编码:base64内容处置:附件;文件名=37855。pdf格式
JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G bGF0ZURlY29kZSA PgpzdHJlYW0KeAHNXW1v5EZy/s5fqy9mdbxeocvwzet5ppku7eo42ziwinv eowtkchsanc/P BPNX1VL qlmtrokbgludx13txf8d/y3/I/5b3dT7mp27M6z7/n//If8r/Oz9 81uV//xbrr/fvszo8qipm8qi/QIGVB2AYQZN3/N7 6zq7IoS/Tf/wxIbhge1Vi1RdlV VXd 1F1/2t vL v8yq//0v b/nhi83r/KrKDxf62Opj9zr79/z u/ZDVUPUYWJTEQYORVD06DRZW6T。。。
我的目的是用html格式发送电子邮件,然而,我无法继续实现这一目标,因为我被这个节目阻止了。任何帮助都将不胜感激。
编辑
我附上一个pdf文件作为电子邮件附件发送,代码如下:
if (attachments != null) {
for (EmailAttachmentData attachment : attachments) {
MimeBodyPart attachPart = new MimeBodyPart();
DataSource source = new ByteArrayDataSource(attachment.getData(),
attachment.getFileType());
attachPart.setDataHandler(new DataHandler(source));
attachPart.setFileName(attachment.getFileName());
multipart.addBodyPart(attachPart);
}
}
message.setContent(multipart);
message.setSentDate(new Date());
try {
Transport transport = session.getTransport(mailProtocol);
transport.connect(mailHost, Integer.parseInt(mailPort), userName, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception ex) {
ex.printStackTrace();
}
下面是我对javax邮件的maven依赖项定义
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
<scope>provided</scope>
</dependency>
通过从一些maven依赖项中排除geronimo-javamail\u 1.4\u规范和geronimo-activation\u 1.1\u规范,我最终解决了自己的问题。我也有多个javax。邮件api和javax。邮件依赖项,从而删除当天保存的重复项。现在一切正常。主题和收件人字段填充良好,附件也正确发送。为清楚起见,我将我所做的排除发布在下面:
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-impl</artifactId>
<version>1.2.8</version>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>1.2.8</version>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-dom</artifactId>
<version>1.2.8</version>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
您使用的是什么版本的JavaMail?
您的收件人代码看起来很好,但比需要的详细得多。但你的内容代码全错了。
带有附件的消息是具有多部分内容的消息,其中一个正文部分包含主消息内容,另一个正文部分包含附件。
您的代码about没有显示您实际上是如何发送消息的。您只是在调用Transport.send?
我正试图通过一个Jenkins脚本管道,借助ext电子邮件插件发送电子邮件。 我已经用默认收件人配置了插件。 这是我的管道: 我试图将电子邮件发送给触发作业的用户,但没有收到发送给默认收件人的电子邮件。我还尝试了。 我得到了这个错误:
问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送
我正在尝试使用CodeIgniter的电子邮件库发送电子邮件。这是我写的代码。 错误:这是我得到的错误。 遇到以下SMTP错误:0php_network_getaddresses:getaddrinfo失败:名称或服务未知无法发送数据:AUTH LOGIN发送AUTH LOGIN命令失败。错误:无法发送数据:邮件从:从:遇到以下SMTP错误:无法发送数据:RCPT TO:到:遇到以下SMTP错误:
问题内容: 如何使用curl命令行程序从gmail帐户发送电子邮件? 我尝试了以下方法: 使用file.txt作为电子邮件的内容,但是,当我运行此命令时,出现以下错误: 是否可以从仍由curl托管的个人服务器托管帐户发送电子邮件?这样会使身份验证过程更容易吗? 问题答案: curl –url 'smtps://smtp.gmail.com:465’ –ssl-reqd \ –mail-from '
问题内容: 我正在尝试使用Java发送电子邮件: 我收到错误消息: 此代码可以发送电子邮件吗? 问题答案: 户名+密码不再是推荐的解决方案。这是因为 我尝试了此操作,Gmail向该代码中用作用户名的电子邮件发送了一封电子邮件,其中说我们最近阻止了你的Google帐户的登录尝试,并将我定向到此支持页面:support.google.com/accounts/answer/6010255因此它看起来很
问题内容: 这有点令人困惑,所以请在这里忍受… 我想建立一个系统,使用户可以通过我的网站发送模板化的电子邮件,但实际上并没有使用我的服务器发送它- 它只是打开自己的本地邮件客户端,并准备发送电子邮件。该应用程序将使用预定义的变量填充电子邮件的正文,以节省用户必须自己键入的电子邮件。然后,如果该消息不完全适合其目的,则他们可以根据需要编辑该消息。 我有很多理由希望它通过用户的本地邮件客户端,因此让服