我想从前端获取收件人和发件人的电子邮件地址!
我在此位置创建了一个“自定义电子邮件发送”保存操作:“Sitecore/System/Modules/Settings/Save Actions/”并将其添加到表单的提交按钮的保存操作中。
在“数据”部分的“内容”选项卡中的“自定义电子邮件发送”操作中,我声明了“程序集:.Helper,类: .Helper.CustomEmail”
并在“参数”字段的“提交”部分中声明:主机:smtp.gmail.com,端口:587,登录:example@gmail.com,密码:*,IsBodyHtml:true,enableSSL:true
并在“编辑器”字段部分中声明了“编辑器:控制:SendMail.Editor”。
但是在单击表单中的“自定义电子邮件发送”操作时,我没有在 To、CC、BCC 等中输入值。
在表格中,我采用了三个字段“收件人”、“发件人”、“消息”。我想要的只是
- “我想从前端获取收件人和发件人地址”
这是我在 CustomEmail.cs 类中的代码:
public class CustomEmail : ISaveAction, ISubmit
{
public void Execute(Sitecore.Data.ID formid, AdaptedResultList fields, params object[] data)
{
NameValueCollection formData = new NameValueCollection();
foreach (AdaptedControlResult acr in fields)
{
formData[acr.FieldName] = acr.Value;
}
try
{
// get field values of form
string emailTo = formData["To"];
string emailFrom = formData["From"];
string personalMsg = formData["Message"];
bool result = false;
if (!string.IsNullOrEmpty(emailFrom) && !string.IsNullOrEmpty(emailTo))
{
// send mail
result = SendEmail(emailTo, emailFrom, personalMsg);
}
// if mail sending fail then show error massege
if (result == false)
{
Sitecore.Diagnostics.Log.Error("Some error occcured while sending email", this);
}
}
catch (Exception ex)
{
Sitecore.Diagnostics.Log.Error(ex.Message.ToString(), this);
}
}
#region SendEmail function
/// <summary>
/// send mail
/// </summary>
/// <param name="To"></param>
/// <param name="From"></param>
/// <param name="Message"></param>
public static bool SendEmail(string To, string From, string Message)
{
bool result = true;
try
{
MailMessage mailMsg = new MailMessage();
MailAddress mailFrom = new MailAddress(From);
mailMsg.From = mailFrom;
try
{
MailAddress mailTo = new MailAddress(To);
mailMsg.To.Add(mailTo);
}
catch
{
}
mailMsg.Body = Message;
mailMsg.IsBodyHtml = true;
var smtp = new SmtpClient(Sitecore.Configuration.Settings.MailServer, Sitecore.Configuration.Settings.MailServerPort);
smtp.EnableSsl = true;
smtp.Send(mailMsg);
}
catch
{
result = false;
}
return result;
}
#endregion
public void Submit(Sitecore.Data.ID formid, AdaptedResultList fields)
{
Execute(formid, fields);
}
#region IOnLoad Members
public void OnLoad(bool isPostback, RenderFormArgs args)
{
}
#endregion
}
在 web.config 我添加了代码:
<setting name="MailServer" value="smtp.gmail.com" />
<setting name="MailServerUserName" value="***@gmail.com" />
<setting name="MailServerPassword" value="***" />
<setting name="MailServerPort" value="587" />
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
我得到了这个例外:
- SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。了解更多信息
请解决这个问题。