إرسال رسائل البريد الإلكتروني BCC باستخدام خادم SMTP؟

StackOverflow https://stackoverflow.com/questions/2750211

  •  02-10-2019
  •  | 
  •  

سؤال

لقد لاحظت هذا على بعض الكود الخاص بي لفترة من الوقت:

/**
 * Add a BCC.
 *
 * Note that according to the conventions of the SMTP protocol all
 * addresses, including BCC addresses, are included in every email as it
 * is sent over the Internet. The BCC addresses are stripped off blind
 * copy email only at the destination email server.
 *
 * @param string $email
 * @param string $name
 * @return object Email
 */

لا أتذكر من أين حصلت عليه (مصدر ممكن) ولكن هذا لا ينبغي أن يكون ذا صلة بهذا السؤال. في الأساس ، كلما حاولت إرسال بريد إلكتروني مع BCCs عبر SMTP ، فإن عناوين BCC ليست مخفية - لقد قرأت RFC بالكامل لبروتوكول SMTP (قبل عامين) ولا أعتقد أنني أفتقد أي شيء.

الشيء الغريب هو ، إذا أرسلت بريدًا إلكترونيًا مع BCCS باستخدام مدمج mail() وظيفة كل شيء يعمل بشكل صحيح وليس لدي أي فكرة عن السبب - أود أن أتعامل مع مرسل البريد الإلكتروني الخاص بي ولكني فشل في فهم هذا.

هل يمكن لأي شخص إلقاء بعض الضوء في هذا الموضوع المظلم؟

هل كانت مفيدة؟

المحلول

لا يتم تجريد عناوين BCC في خادم البريد الإلكتروني الوجهة. هذه ليست طريقة عمله.

كيف يعمل SMTP بالفعل

  • سيرسل المرسل قائمة من RCPT TO الأوامر إلى خادم SMTP ، واحد لكل عناوين بريد إلكتروني للمستقبل ، وهذا الأمر لا يميز ما إذا كان المتلقي أمرًا طبيعيًا لـ CC أو BCC Type.
  • بعد فترة وجيزة من الاتصال بالأمر الذي يخبر خادم SMTP الذي هو المرسل ، وهو الخادم ، وكل شيء آخر ، عندها فقط سيتصل المرسل بـ DATA الأمر ، والذي سيحتوي على محتوى البريد الإلكتروني - والذي يتكون من رؤوس البريد الإلكتروني والجسم - الذي يتم استلامه من قبل عملاء البريد الإلكتروني. من بين رؤوس البريد الإلكتروني هذه المعتادة من العنوان ، إلى العنوان ، عنوان CC.
  • لا يتم عرض عنوان BCC للمستقبل ، ببساطة لأنه لم يتم طباعته تحت DATA الأمر ، ليس لأن خادم SMTP الوجهة قام بتجريدهم بعيدًا. سيشير خادم SMTP الوجهة فقط إلى RCPT TO بالنسبة لقائمة عناوين البريد الإلكتروني التي يجب أن تتلقى محتوى البريد الإلكتروني. لا يهتم حقًا ما إذا كان جهاز الاستقبال في قائمة CC أو BCC.
    تحديث (للتوضيح): يجب سرد عناوين البريد الإلكتروني BCC في RCPT TO قائمة الأوامر ، ولكن يجب على رأس BCC ليس يتم طباعتها تحت DATA يأمر.

نقلاً عن جزء من RFC أعتقد أنه مناسب لقضيتك:

يرجى ملاحظة أن بيانات البريد تتضمن عناصر رأس المذكرة مثل التاريخ ، الموضوع ، إلى ، CC ، من [2].

طرح مرسل البريد الإلكتروني الخاص بك

قبل عامين ، أعتقد بصراحة ، إنه يعود إلى وقت طويل لافتراض أنك ما زلت تحفظ من طرف إلى طرف RFC 821. :)

نصائح أخرى

متأخر جدًا ، لكن الإجابة المقبولة خاطئة بشكل أساسي.

أولاً ، SMTP لا علاقة له BCC. SMTP ، كبروتوكول ، يهتم فقط بمسار العودة ( MAIL طلب) ، قائمة بالمستلمين ( RCPT طلب) ، والبيانات المراد نقلها ( DATA طلب). إذا كنت ترغب في إرسال بريد إلكتروني إلى شخص ما عبر SMTP ، فعليك توفير عنوانها في أ RCPT طلب ، الفترة.

محتويات البريد الإلكتروني - DATA, ، على نحو فعال - يتم تحديدها بشكل منفصل تمامًا ، في RFC2822. هناك الكثير من خطوط الطول في كيفية BCC يجب التعامل معها. تعطي المواصفات 3 طرق للتعامل BCC, وفي واحد منهم فقط BCC جردت أثناء تحضير البريد الإلكتروني. إذا استخدمت Thunderbird كعميل بريد إلكتروني ، على سبيل المثال ، وقمت بإشارةه إلى خادم SMTP ، ثم انظر إلى الرسالة على السطر ، ثم أجد أن Thunderbird BCC ذهب (من SMTP DATA) ، واتصال SMTP بدلاً من ذلك يحتوي على معيار RCPT طلب bccعنوان ed. لذلك ، يتحول ثندربيرد BCC إلى RCPT, ، لكن هذه ليست الطريقة الوحيدة للقيام بذلك.

مكان آخر للتعامل معه BCC هو في MTA - بمعنى آخر ، أيا كان خادم SMTP عميل البريد الخاص بك يشير إليه. Sendmail ، على سبيل المثال ، يبحث في جميع To, Cc, ، و Bcc خطوط في SMTP DATA, ثم يبني قائمة عناوين من تلك الخطوط ، ثم يزيل ال Bcc خط. يمكنك إقناع SendMail بالحفاظ على Bcc أذا أردت. إذا لم يكن SendMail هو الوجهة MTA ، فسيتم الاتصال بـ MTA آخر عبر SMTP ، وإرسال عناوين المستلم عبر RCPT. وبعبارة أخرى ، إذا كان sendmail هو الوجهة MTA ، وتحصل على ملف Bcc, ، سوف يخرجها ، على عكس بيان آمي.

هناك أيضا بعض الالتباس في التعليقات. يمكنك تحديد RCPT عناوين أي مجال ، وليس مجرد قائمة العناوين في نفس المجال. يتعين على MTA البحث عن سجلات MX لمجالات الوجهة لمعرفة مكان إرسال كل شيء. بيانات Google.com و Yahoo.com خاطئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top