Добрый день! Подскажите, пожалуйста, как корректно внести изменения в процесс выполнения рассылки.
Задача такая, если тип рассылки - Рассылка смс, то емайл для всех адресатов один и тот же, тема - код + мобильный номер контакта, и тема письма с дополнениями.
Вношу изменения в процесс :
var manager = UserConnection.GetSchemaManager("EntitySchemaManager") as EntitySchemaManager;
SetMassMailingStatus(MassMailingId, new Guid("ED5F422E-F46B-1410-6590-1C6F65E24BE8"), manager, this.UId);//В работе
Dictionary macrosDictionary = new Dictionary();
PrepareMailSubjectAndBody(manager);
var targetEntitySchemaQuery = new EntitySchemaQuery(manager, "MassMailingContact");
var idMailing = targetEntitySchemaQuery.AddColumn("Id").Name;
var idMassMailing = targetEntitySchemaQuery.AddColumn("MassMailing").Name;
// здесь определяю, если id рассылки для смс, то emailOfMailing или один, или берется у контакта
if (idMassMailing == "c6d6980b-20c3-4b07-8fe9-a2cd44641f7c") {
var emailOfMailing = "sms@massreach.com";
} else {
var emailOfMailing = targetEntitySchemaQuery.AddColumn("Email.Number").Name;
}
var MobilePhoneOfMailing = targetEntitySchemaQuery.AddColumn("MobilePhone.Number").Name;
//var emailOfMailing = targetEntitySchemaQuery.AddColumn("Email.Number").Name;
var accountOwnership = targetEntitySchemaQuery.AddColumn("Contact.Account.Ownership.Name").Name;
var idContactOfMailing = targetEntitySchemaQuery.AddColumn("Contact.Id").Name;
var contactNameOfMailing = targetEntitySchemaQuery.AddColumn("Contact.Name").Name;
var contactGenderNameOfMailing = targetEntitySchemaQuery.AddColumn("Contact.Gender.Name").Name;
targetEntitySchemaQuery.Filters.Add(targetEntitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "MassMailing.Id", MassMailingId));
var listFilter = new EntitySchemaQueryFilterCollection(targetEntitySchemaQuery, LogicalOperationStrict.Or);
listFilter.Add(targetEntitySchemaQuery.CreateIsNullFilter("SendStatus"));
listFilter.Add(targetEntitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.NotEqual, "SendStatus", new Guid("8074FFC0-6107-E011-A646-16D83CAB0980")));
targetEntitySchemaQuery.Filters.Add(listFilter);
var mailingCollection = targetEntitySchemaQuery.GetEntityCollection(UserConnection);
var credentials = new MailCredentials() {
Host = GetSysSettingsValue("SmtpHost"),
Port = Convert.ToInt32(GetSysSettingsValue("SmtpPort")),
UserName = GetSysSettingsValue("SmtpUserName"),
UserPassword = GetSysSettingsValue("SmtpUserPassword"),
};
int smtpTimeout = int.Parse(Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "SmtpTimeout").ToString());
if (smtpTimeout 35) {
smtpTimeout = 35000;
} else {
smtpTimeout *= 1000;
}
credentials.Timeout = smtpTimeout;
object enableSsl = Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "SmtpEnableSsl");
if (enableSsl != null) {
credentials.UseSsl = (bool)enableSsl;
}
var mailClient = new Terrasoft.Mail.SmtpClient(UserConnection, credentials);
foreach (var mailingMacros in mailingCollection) {
Guid targetId = mailingMacros.GetTypedColumnValue(idMailing);
string recepient = mailingMacros.GetTypedColumnValue(emailOfMailing);
if(string.IsNullOrEmpty(recepient)) {
continue;
}
Guid contactId = mailingMacros.GetTypedColumnValue(idContactOfMailing);
ErrorCode = "None";
MacrosHelper.UserConnection = UserConnection;
//аналогично для body
if (idMassMailing == "c6d6980b-20c3-4b07-8fe9-a2cd44641f7c") {
Body = "[Sender]itcol[/Sender][SMS]" + body +"[/SMS]";
} else {
string body = MacrosHelper.ProcessText(
MailBody,
UserConnection.CurrentUser.ContactId,
contactId);
}
string body = MacrosHelper.ProcessText(
MailBody,
UserConnection.CurrentUser.ContactId,
contactId);
//аналогично для title
if (idMassMailing == "c6d6980b-20c3-4b07-8fe9-a2cd44641f7c") {
string title = "794dcc7c3a404454 "+ MobilePhoneOfMailing;
} else {
string title = MailSubject;
}
// string title = MailSubject;
string from = GetSysSettingsValue("MassMailingFromAddress");
MailMessage message = null;
try {
message = new MailMessage {
Subject = title,
Charset = "utf-8",
BodyHtmlText = body,
From = new EmailAddress {
AsString = from
}
};
message.To.Add(new EmailAddress {
AsString = recepient.Trim()
});
FillAttachments(MassMailingId, message.Attachments);
} catch (FormatException e) {
throw new SmtpException("ErrorOnSend", e.Message, e);
}
string mailCodeId = String.Empty;
if (ErrorCode.Equals("None")) {
try {
mailClient.SendMessage(message);
} catch (Exception e) {
ErrorCode = e.Message;
}
}
SetMassMailingContactSendStatus(ErrorCode, targetId, manager);
}
SetMassMailingStatus(MassMailingId, new Guid("FF7F4232-F46B-1410-6690-1C6F65E24BE8"), manager, Guid.Empty);//Завершена
return true;
При компиляции получаю, что имя emailOfMailing отсутствует в текущем контексте, стока ошибки вот эта:
string recepient = mailingMacros.GetTypedColumnValue(emailOfMailing);
аналогично для других переменных - title и body.
Подскажите, пожалуйста, что я делаю неверно. Спасибо!!
Нравится