2016-08-26 5 views
1

하나의 기능을 사용하여 서로 다른 두 곳에서 이메일을 보냅니다. 한 곳에서는 다른 전자 메일 주소를 참조해야하며 다른 곳에서는 필요하지 않으므로 기본적으로 cc를 null로 유지하고 필요하면 전자 메일 주소를 삽입하는 것이 좋습니다.'cc'가 비어있는 경우 Swiftmailer에서 불만을 제기 함

이것은 제 함수입니다.

private function notifyByMail($to, $from, $toName="", $fromName="", $body, $subject, $cc="", $ccName="") 
{ 
    //use custom data to send notification email 
    $message = \Swift_Message::newInstance() 
     ->setSubject($subject) 
     ->setTo(array($to => $toName)) 
     ->setCc(array($cc => $ccName)) 
     ->setFrom(array($from => $fromName)) 
     ->setBody($body);    

    $this->get('mailer')->send($message); 
} 

그리고 이렇게 두 곳에서 호출하십시오. 공통 평가 기준 비어 있지 않기 때문에

$this->notifyByMail($to, $from, '', $name, $body, $subject); 

$this->notifyByMail($to, $from, 'Jack', $name, $body, $subject, $cc, 'Jack'); 

두 번째는 작동하지만, 첫 번째는 문제가있다. 이것은 오류에 관한 것입니다.

예외가 발생했습니다 : 지정된 사서함 []의 주소가 RFC 2822, 3.6.2의 을 준수하지 않습니다.

나는 cc를 제거하고 첫 번째 것을 다시 테스트 한 다음 완벽하게 작동합니다. 나는 다른 곳에서 내가 그것을 사용하기 때문에 그 참조를 필요로한다. 왜 누군가가 cc가 null이 될 수 없는지 말해 줄 수 있습니까? 이 문제를 어떻게 해결해야합니까?

답변

2

우선 cc는 null이 아니며 빈 문자열 ""입니다. 둘째, 사소한 솔루션을 사용하지 않는 이유는 무엇입니까?

private function notifyByMail($to, $from, $toName="", $fromName="", $body, $subject, $cc="", $ccName="") 
{ 
    //use custom data to send notification email 
    $message = \Swift_Message::newInstance() 
     ->setSubject($subject) 
     ->setTo(array($to => $toName)) 
     ->setFrom(array($from => $fromName)) 
     ->setBody($body);    
    if(!empty($cc)){ 
     $message->setCc(array($cc => $ccName)) 
    } 

    $this->get('mailer')->send($message); 
}