通过EmailService发送带有附件的电子邮件失败

2020-09-07 13:09发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我正在尝试通过EmailService发送带有附件的电子邮件,不幸的是,如果我添加附件,每次都会失败...

我的代码段:

 最终CatalogVersionModel目录= catalogVersionService.getCatalogVersion(CATALOGNAME,CATALOGVERSION);
 
      最终的EmailAddressModel addrToModel = new EmailAddressModel();
      addrToModel.setDisplayName(EMAILTO);
      addrToModel.setEmailAddress(EMAILTO);
 
      最终的EmailAddressModel addrFromModel = new EmailAddressModel();
      addrFromModel.setDisplayName(EMAILFROM);
      addrFromModel.setEmailAddress(EMAILFROM);
 
 
      EmailAttachmentModel mediaModel =新的EmailAttachmentModel();
      mediaModel.setCode(filename);
      mediaModel.setCatalogVersion(catalog);
      mediaModel.setRemovable(Boolean.TRUE);
      mediaModel.setLocation(filename);
      modelService.save(mediaModel);
 
      最终的EmailMessageModel msgModel = new EmailMessageModel();
      msgModel.setToAddresses(Collections.singletonList(addrToModel));
      msgModel.setFromAddress(addrFromModel);
      msgModel.setSubject("测试报告");
      msgModel.setBody(" blabalbla");
      msgModel.setReplyToAddress(" noreply@test.ch");
 
      msgModel.setAttachments(Collections.singletonList(mediaModel));
 
      emailService.send(msgModel);

  

是否有特殊的想法要知道与EmailService的附件? 没有附件,服务正在运行...

有人知道如何处理附件吗?

非常感谢!

格里兹

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我正在尝试通过EmailService发送带有附件的电子邮件,不幸的是,如果我添加附件,每次都会失败...

我的代码段:

 最终CatalogVersionModel目录= catalogVersionService.getCatalogVersion(CATALOGNAME,CATALOGVERSION);
 
      最终的EmailAddressModel addrToModel = new EmailAddressModel();
      addrToModel.setDisplayName(EMAILTO);
      addrToModel.setEmailAddress(EMAILTO);
 
      最终的EmailAddressModel addrFromModel = new EmailAddressModel();
      addrFromModel.setDisplayName(EMAILFROM);
      addrFromModel.setEmailAddress(EMAILFROM);
 
 
      EmailAttachmentModel mediaModel =新的EmailAttachmentModel();
      mediaModel.setCode(filename);
      mediaModel.setCatalogVersion(catalog);
      mediaModel.setRemovable(Boolean.TRUE);
      mediaModel.setLocation(filename);
      modelService.save(mediaModel);
 
      最终的EmailMessageModel msgModel = new EmailMessageModel();
      msgModel.setToAddresses(Collections.singletonList(addrToModel));
      msgModel.setFromAddress(addrFromModel);
      msgModel.setSubject("测试报告");
      msgModel.setBody(" blabalbla");
      msgModel.setReplyToAddress(" noreply@test.ch");
 
      msgModel.setAttachments(Collections.singletonList(mediaModel));
 
      emailService.send(msgModel);

  

是否有特殊的想法要知道与EmailService的附件? 没有附件,服务正在运行...

有人知道如何处理附件吗?

非常感谢!

格里兹

付费偷看设置
发送
5条回答
lukcy2020
1楼 · 2020-09-07 13:51.采纳回答

大家好,

感谢您的答复,我终于找到了对我有用的解决方案。

我看到EmailService有一个名为" createEmailAttachment"的方法,该方法正在创建EmailAttachment ...此方法中的代码如下所示:

  @Override
  public EmailAttachmentModel createEmailAttachment(final DataInputStream masterDataStream,final String filename,
          最终的字符串mimeType)
  {
      最终的EmailAttachmentModel附件= getModelService()。create(EmailAttachmentModel.class);
      attachment.setCode(filename);
      attachment.setMime(mimeType);
      attachment.setRealFileName(filename);
      attachment.setCatalogVersion(getCatalogVersion());
      getModelService()。save(attachment);

      getMediaService()。setStreamForMedia(attachment,masterDataStream,文件名,mimeType,getEmailAttachmentsMediaFolder());
      返回附件;
  }

  

如果要使用此方法,请务必在...之前设置正确的Catalogversion。

Greetz

SAP小黑
2楼-- · 2020-09-07 13:50

您好,我可以知道您使用的是什么服务吗? 因为我也想发送带有附件的电子邮件,但是我正在使用YaaS电子邮件服务,该服务不支持发送附件

zhangjiyang1323
3楼-- · 2020-09-07 13:52

嗨Dominic,

尝试覆盖DefaultEmailGenerationService:方法生成。 然后创建您的附件并将其添加到您的emailMessageModel中。 您应该在数据库中具有mediaModel。 希望对您有帮助。

  private void ConstructAttachments(最终EmailMessageModel emailMessageModel,
                                                           最终的MediaModel文件,
                                                           ){
          最终的EmailAttachmentModel附件= getModelService()。create(EmailAttachmentModel.class);
          attachment.setCode(emailMessageModel.getPk()。toString());
          attachment.setMime(file.getMime());
          attachment.setRealFileName(file.getRealFileName());
          attachment.setCatalogVersion(file.getCatalogVersion());
          attachment.setLocation(file.getLocation());
          attachment.setSize(file.getSize());
          getModelService()。save(attachment);
          最终List 附件=新ArrayList <>();
          attachements.add(attachment);
          emailMessageModel.setAttachments(attachments);
         

  

最好的问候Hassan

spaceman01
4楼-- · 2020-09-07 13:31

嗨,

我在这里有一个澄清。 上面的代码对我来说很好,但是我们可以直接从MultiPartFile传递InputStream吗?

我的意思是不创建媒体模型。

关于Ansell,

huskylover
5楼-- · 2020-09-07 13:36

我认为您需要设置一个加载的媒体模型,使其包含对该实例的PK引用。

因此,您需要保存它,然后加载它,并将其添加到电子邮件中。

一周热门 更多>