سؤال

أنا أكتب مهمة مؤقتة وبمجرد اكتمالها يتم إرسال بريد إلكتروني من noreply@company.com, ، عندما يصل إلى Outlook فإنه يُظهر هذا العنوان كعنوان من الشخص.

هل هناك طريقة لجعله يعرض "اسم العرض".على سبيل المثال، ستظهر جميع رسائل البريد الإلكتروني المستلمة مني Paul Matthews لا paul.matthews@company.com.(الذي أعرفه في هذه الحالة ربما يكون له علاقة بـ AD و Exchange).

الكود الذي أستخدمه موجود أدناه.

var emailFromAddress = _properties["EmailFromAddress"].ToString();
           var emailToAddress = _properties["EmailDistributionGroup"].ToString();
           var webAddress = _properties["WebSiteOfLibrary"].ToString();

           var subject = "New Report - " + DateTime.Now.ToString("dd MMM yyyy");

           StringDictionary messageHeader = new StringDictionary();
           messageHeader.Add("to", emailToAddress);
           messageHeader.Add("from", emailFromAddress);
           messageHeader.Add("subject", subject);
           messageHeader.Add("content-type", "text/html");

           using (SPSite site = new SPSite(webAddress))
           {
               using (SPWeb web = site.OpenWeb())
               {
                   DateTime timeNow = DateTime.Now;
                   var sb = new StringBuilder();
                   sb.Append(
                       "<STYLE TYPE='text/css'>body, html{font-color:#000;font-family:arial;font-size:8.0pt}</STYLE>");
                   sb.AppendFormat("<div style='font-size:11pt;font-family:calibri'>Results between {0} and {1}</div><br/><br/>", LastRun.ToString("dd MMM yyyy hh:mm tt"), timeNow.ToString("dd MMM yyyy h:mm tt"));
                   sb.AppendFormat("<div style='font-size:11pt;font-family:calibri'>Total: {0}<br/><br/>", total);
                   sb.AppendLine(HTMLResults);

                   SPUtility.SendEmail(web, messageHeader, sb.ToString());
               }
           }

المهم هو أن عنوان البريد الإلكتروني يجب أن يكون noreply@company.com والذي سنستخدمه لتطبيقات متعددة، لذا يجب أن يعكس اسم العرض اسم التطبيق.

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

المحلول

هل أقترح التبديل إلى استخدام System.Net.Mail.MailMessage كائن بدلاً من SPUtility. SPUtility.SendEmail هو اختصار جيد، ولكن، كما رأيت، تفقد قدرًا كبيرًا من التحكم في كيفية إرسال الرسالة وتنسيقها.ال MailMessage الكائن يمنحك ذلك مرة أخرى ولكنه يتطلب المزيد من العمل قليلاً.

للإجابة على سؤالك المحدد، يتعامل كائن MailAddress مع تنسيق عنوان البريد الإلكتروني ومجموعة الأسماء بحيث يتعين عليك استخدام اسم التطبيق الخاص بك باعتباره "fromname' أقل.

MailMessage msg = new MailMessage();

msg.From = new MailAddress(web.Site.WebApplication.OutboundMailSenderAddress, fromName);
msg.To.Add(new MailAddress(to));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
msg.BodyEncoding = System.Text.Encoding.UTF8;

SmtpClient server = new SmtpClient(web.Site.WebApplication.OutboundMailServiceInstance.Server.Address);

server.Send(msg);

نصائح أخرى

إذا كنت ترغب في تخصيص عنوان بريد إلكتروني المرسل، فلن تتمكن من استخدام Sputility.sendemail - عليك استخدام فئات Framework Framework System.Net.mail.

تحت الأغطية، تستدعي المكاسب طريقة تسمى "reftionfriendlynamefromemailaddress": (

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