【发布时间】:2016-11-30 15:28:31
【问题描述】:
我正在使用 sendgrid 发送电子邮件,使用以下代码可以正常工作 但它没有附件。
package sendgrid;
import com.sendgrid.Content;
import com.sendgrid.Email;
import com.sendgrid.Mail;
import com.sendgrid.Method;
import com.sendgrid.Request;
import com.sendgrid.Response;
import com.sendgrid.SendGrid;
import java.io.IOException;
public class SendEmail {
public static void main(String[] args) throws IOException {
Email from = new Email("test@example.com");
String subject = "Hello World from the SendGrid Java Library!";
Email to = new Email("shareef@gmail.com");
Content content = new Content("text/plain", "Hello, Email!");
Mail mail = new Mail(from, subject, to, content);
SendGrid sg = new SendGrid("SG.rIEh84OgQBybYEJcOMie1wd.AZqqdWNYXbOqTarUJcG-iSg0UtHJtCto4oe6tVzn6es");
Request request = new Request();
try {
request.method = Method.POST;
request.endpoint = "mail/send";
request.body = mail.build();
Response response = sg.api(request);
System.out.println(response.statusCode);
System.out.println(response.body);
System.out.println(response.headers);
} catch (IOException ex) {
throw ex;
}
}
}
但是我需要发送附件,所以我搜索了 github 源和 web 文档 API,由于某种原因没有 javadocs,但有一个示例 GitHub sendgrid 所以我一直在尝试直到它起作用,我缩小了范围一些例外和响应代码,起初我得到了未经授权的禁止,它更好地响应 202,意味着有效和排队 (check here) 任何方式这是我发送电子邮件和附件的代码但是当你打开附件其大小为零,并说无法打开或预览文件!
package sendgrid;
import com.sendgrid.Attachments;
import com.sendgrid.Content;
import com.sendgrid.Email;
import com.sendgrid.Mail;
import com.sendgrid.MailSettings;
import com.sendgrid.Method;
import com.sendgrid.Request;
import com.sendgrid.SendGrid;
import com.sendgrid.Setting;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class SendEmailAttachmentV2 {
public static void main(String[] args) throws IOException {
sendmail();
}
// Fully populated Mail object
public static void sendmail() throws IOException {
com.sendgrid.Response response1;
Email from = new Email("shareef@gmail.com");
String subject = "Hello World from the SendGrid Java Library!";
Email to = new Email("shareef@gmail.com");
Content content = new Content("text/plain", "Hello, Email!");
Mail mail = new Mail(from, subject, to, content);
File file = new File("C:\\x.png");
byte[] fileData = null;
try {
fileData = org.apache.commons.io.IOUtils.toByteArray(new FileInputStream(file));
} catch (IOException ex) {
}
Attachments attachments3 = new Attachments();
attachments3.setContent(new String(fileData, 0, (int) file.length(), "UTF-8"));
attachments3.setType("image/png");//"application/pdf"
attachments3.setFilename("x.png");
attachments3.setDisposition("attachment");
attachments3.setContentId("Banner");
mail.addAttachments(attachments3);
MailSettings mailSettings = new MailSettings();
Setting sandBoxMode = new Setting();
sandBoxMode.setEnable(true);
mailSettings.setSandboxMode(sandBoxMode);
SendGrid sg = new SendGrid("SG.1Hg78VK0TJ6kexUnByZUYg.LAa5A4GufssZ9lpPQdV6PcZCY6SZ9Xq6LvqfMRG0wesKw");
Request request1 = new Request();
try {
request1.method = Method.POST;
request1.endpoint = "mail/send";
request1.body = mail.build();
response1 = sg.api(request1);
System.out.println(response1.statusCode);
System.out.println(response1.body);
System.out.println(response1.headers);
} catch (IOException ex) {
System.out.println(ex);
}
}
}
仅供参考:使用您从 sendgrid 控制台生成的 API 密钥
【问题讨论】:
-
您应该从代码示例中删除密钥
-
是的,谢谢@IcedDante,我放的是随机的,不是真实的,我会以任何方式重新随机的
-
嗨,@shareef 你能告诉我一次可以发送多少封电子邮件,sendgrid 的 java sdk 有没有限制?
-
嗨@OnkarMusale,您可以查看他们的网站以获取更新的信息文档,或者只是进行实时聊天,他们反应非常迅速!
-
@shareef 非常感谢您的回复,我刚刚发现我们可以每秒发送 10k 到 15k,但建议每秒发送 1k。