首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SingleEmailMessage和cc的问题

SingleEmailMessage和cc的问题
EN

Stack Overflow用户
提问于 2018-05-30 05:41:08
回答 1查看 404关注 0票数 0

我有一个应用程序,如果所有的目的地字段(收件人:,抄送:和密件抄送:)都填好了,但如果其中一个是空的,我会收到一个错误,说明有一个无效的电子邮件地址。我使用的是文本输入字段和多个电子邮件地址,用分号(;)分隔。如果输入字段为空,我不会为该选项分配任何内容。你知道为什么会发生这种情况吗?对于不显示任何内容的setCcAddress和setBccAddresses函数,我应该使用什么值?我已经尝试了几个(null,空列表)。

请参阅下面的代码。

扩展名:

代码语言:javascript
复制
public class AffEngpdfExtension 
{
public ID callersId;
private String transferUrl;

public String recipientEmail { get; set; }
public String ccEmail { get; set; }
public String bccEmail { get; set; }
public String subjectEmail { get; set; }
public String bodyEmail { get; set; }
public String docName { get; set; }

// Constructor
public AffEngpdfExtension(ApexPages.StandardController stdController) {
    stdController.addFields(new List<String>{ 'Name', 'User_Email__c', 'Oversight_Email__c', 'Sales_Rep_Email__c' });
    Affiliate_Consulting_Engagement__c affEngage;
    affEngage = (Affiliate_Consulting_Engagement__c)stdController.getRecord();

    callersId = stdController.getRecord().id;
    this.recipientEmail = affEngage.User_Email__c;
    ccEmail = affEngage.Oversight_Email__c + ';' + affEngage.Sales_Rep_Email__c;
    List<Contact> senderEmail = [SELECT Id, Email FROM Contact WHERE pse__Salesforce_User__c=:UserInfo.getUserId() LIMIT 1];
    bccEmail = senderEmail[0].Email;
    subjectEmail = 'Affiliate Consulting Engagement ' + affEngage.Name + ' - ' + affEngage.Engagement_Code__c;
    docName = affEngage.Name + '-' + affEngage.Engagement_Code__c;
}
public String TransferPage { get; set; }
// Action method to transfer to a PDF version of the current page !!!
// MUST set the value of TransferPage as part of this Action call !!!
public PageReference transferTopage() {
    transferUrl = '/apex/' + TransferPage + '?scontrolCaching=1&id=' + callersId;
    PageReference pdfPage = new PageReference(transferUrl);
    System.Debug('transferTopage-transferUrl: ' + transferUrl);
    return pdfPage;
}

// Email content...

public PageReference emailPdf() {

    System.Debug('EmailPDF-TransferPage: ' + TransferPage);
    if(String.isBlank(this.TransferPage)) {
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 
           'Internal Error: missing TransferPage in pdfExtension'));
        return null; // early out
    }
    if(String.isBlank(this.recipientEmail)) {
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 
           'You must enter a Send To email address !'));
        return null; // early out
    }
    if(String.isBlank(this.subjectEmail)) {
        subjectEmail = TransferPage;
    }
    String tempstr = this.bodyEmail;
    tempstr = tempstr.replaceall('[^\\W\\D]*','');
    if (String.isBlank(tempstr)) {
        bodyEmail = 'Document(s) attached for your review.';
    }
    // PageReference reportPage = ApexPages.currentPage();
    transferUrl = '/apex/' + TransferPage + '?scontrolCaching=1&id=' + callersId;
    PageReference pdfPage = new PageReference(transferUrl);
    Blob reportPdf;
    try {
        reportPdf = pdfPage.getContentAsPDF();
    }
    catch (Exception e) {
        reportPdf = Blob.valueOf(e.getMessage());
    }
    // Create email
    Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
    List<String> addresses = new List<String>();
    addresses.clear(); 

    if (String.isBlank(this.recipientEmail)) {
        addresses = this.recipientEmail.split(';');
        message.setToAddresses(addresses);
    } else
    addresses.clear();

    if (String.isBlank(this.ccEmail)) {
        addresses = this.ccEmail.split(';');
        message.setCcAddresses(addresses);
    } else
    addresses.clear();

    if (String.isBlank(this.bccEmail)) {
        addresses = this.bccEmail.split(';');
        message.setBccAddresses(addresses);
    } else
    addresses.clear();

    message.setSubject(subjectEmail);
    message.setHtmlBody(bodyEmail);

    // Attach PDF to email and send
    Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
    attachment.setContentType('application/pdf');
    attachment.setFileName(TransferPage + '_' + docName + '.pdf'); 
    attachment.setInline(false);
    attachment.setBody(reportPdf);
    message.setFileAttachments(new Messaging.EmailFileAttachment[]{ attachment });
    Messaging.sendEmail(new Messaging.SingleEmailMessage[]{ message });
    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO,
       'Email with PDF attachment sent to ' + this.recipientEmail));
    return null;
}
}

VF页面:

代码语言:javascript
复制
<apex:page sidebar="false" showHeader="false" tabStyle="Account" 
       standardController="Affiliate_Consulting_Engagement__c"
       extensions="AffEngpdfExtension"
       applyHtmlTag="false" applyBodyTag="false" >

<apex:form >
    <apex:pageBlock >
        <apex:pageMessages ></apex:pageMessages>
            <apex:pageBlockSection columns="1" >
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:outputLabel for="recipientEmail" value="To:"/> 
                    <apex:inputText value="{!recipientEmail }" size="100"/>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:outputLabel for="ccEmail" value="cc: "/> 
                    <apex:inputText value="{!ccEmail }" size="100"/>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:outputLabel for="recipientEmail" value="bcc:"/> 
                    <apex:inputText value="{!bccEmail }" size="100"/>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:outputLabel for="subjectEmail" value="Email Subject (Optional)"/> 
                    <apex:inputText value="{!subjectEmail }" size="100" />
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:outputLabel for="bodyEmail" value="Email Text (Optional)" /> 
                    <apex:inputTextarea value="{!bodyEmail}" rows="6" cols="20" richText="true" />
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem dataStyle="text-align:left;">
                    <apex:commandLink action="{!emailPdf }" value="Email PDF" styleClass="btn" id="btnEmail">
                        <apex:param name="TransferPage"
                        assignTo="{!TransferPage}"
                        value="AffiliateEngagementPdf" />
                    </apex:commandLink>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
        </apex:pageBlock>   
    </apex:form>

<c:AffEngComponent Engage="{!Affiliate_Consulting_Engagement__c }" />    

</apex:page>
EN

回答 1

Stack Overflow用户

发布于 2018-05-30 06:53:19

忽略这个问题。我检查电子邮件地址的条件是倒退的。我已经解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50593379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档