मैं Symfony 1.4 और तेज मेलर के साथ काम कर रहा हूँ मान्य Sendgrid के माध्यम से ईमेल के एक थोक सरणी भेजने के लिए कैसे।स्विफ्ट मेलर में MailboxHeader.php का विस्तार या ईमेल
मैं ईमेल पतों में से कुछ पर एक RFC अनुपालन त्रुटि हो रही है।
एक समाधान remove the condition to throw the error होगा, और यह काम करता है, लेकिन यह मूल बदलते शामिल है। आप साइट फ़ाइलों में MailboxHeader.php का विस्तार कैसे करेंगे और सिम्फनी कोर नहीं। ऐसा कुछ, लेकिन ऐसा नहीं है क्योंकि यह काम नहीं करता है:
class overrideRFCError extends Swift_Mime_Headers_AbstractHeader
{
private function _assertValidAddress($address)
{
if (!preg_match('/^' . $this->getGrammar('addr-spec') . '$/D',
$address))
{
// throw new Swift_RfcComplianceException(
// 'Address in mailbox given [' . $address .
// '] does not comply with RFC 2822, 3.6.2.'
// );
}
}
}
यह भी थोड़ा भारी हाथ लगता है। आरएफसी अनुपालन के लिए ईमेल को प्रमाणित करने का कोई तरीका है। यदि ऐसा है, तो मैं इसे सरणी से बस अनसेट कर सकता हूं।
अद्यतन 07/17/13
मैं इसे आरएफसी के अनुरूप है, जो समस्या का हल करने के लिए प्रत्येक पते पर से सफ़ाई डाल करने में सक्षम था। हालांकि, मैं जानना चाहता हूं कि स्विफ्टमेलर में कोई फ़ंक्शन मौजूद है जो यह चेक करता है, बल्कि कस्टम फ़ंक्शन लिखता है।
अद्यतन 07/18/13
यहाँ मैं क्या काम मिल गया है। मैंने जितनी ज्यादा हो सके प्रविष्टियों को स्वच्छ करने की कोशिश की।
लोड एक चर $emailList
बुलाया में पते की एक सरणी:
// loop and validate each email address
public static function validateEmails($emailList) {
foreach($emailList as $address => $name) {
try {
$v = new sfValidatorEmail();
$email = $v->clean($address);
} catch (sfValidatorError $e) {
unset($emailList[$address]);
}
}
foreach($emailList as $address => $name) {
$rfcTesting = validateEmailForRFC::is_email($address);
if(!$rfcTesting) {
unset($emailList[$address]);
}
if (!preg_match('/^[[email protected]]/', $address)) {
unset($emailList[$address]);
}
}
// List should be clean
return $emailList;
}
तो यह पहले sfValidator का उपयोग करता प्रारंभिक बाहर निकाल रहे हैं:
$cleanList = sendGridEmailer::validateEmails($emailList);
sendGridEmailer कक्षा में
खराब पते इसके बाद, मुझे एक आरएफसी अनुपालन स्क्रिप्ट here मिली और उसे सत्यापित करें EmailForRFC क्लास में जो उन्हें आरएफसी अनुपालन करना चाहिए।
अंतिम, मैं अजीब वर्ण है कि पिछले चेकों समझ नहीं आया के साथ किसी भी stragglers के लिए एक अंतिम pregmatch है।
यह Symfony कोर अछूता रखने के लिए मुझे अनुमति दी है और कोई अनुपालन त्रुटियों के साथ स्विफ्ट के लिए पते तैयार।
आप पतों कि त्रुटि जुटाने पर किसी भी जानकारी है? ओवरराइडिंग से त्रुटि से बचने के लिए एक समाधान हो सकता है लेकिन समाधान नहीं। –
असल में, इससे बचने के लिए काफी संभावना नहीं है। गलत पतों की जांच आरएफसी का अनुपालन करती है हालांकि प्रदाता इसे स्वीकार कर सकते हैं। स्विफ्ट में चेकिंग नियम हार्डकोड किए गए हैं। कोर बदलें, त्रुटि फेंक न दें लेकिन पता लॉग फ़ाइल को लिखें। तो आप जांच सकते हैं कि पता गलत है या यह सिर्फ सख्त जांच है। –
मैं त्रुटि जांच को नहीं हटाऊंगा। मुझे लगता है कि एक स्विफ्टमेलर फ़ंक्शन है जो आरएफसी सत्यापन की जांच करेगा। क्या यह अस्तित्व में है? –