2010-10-01 6 views
0

Я добавил поле счёта в мое электронное письмо, которое я отправляю и получаю сообщение об ошибке в строке темы. Все отлично работает, когда я комментирую линию BCC, поэтому я не уверен, что не так. Вот код, я использую (это в Delphi .NET, но главным является то же самое, как C# и VB):Указанная строка не указана в форме, необходимой для адреса электронной почты при добавлении BCC в .net-почту.

procedure TEmail.SendEmail(From, SendTo, CC, Subject, Body, BCC: String; Html: Integer); 
var 
    Mail: MailMessage; 
    Smtp: SMTPClient; 
begin 
    Mail := MailMessage.Create(From, SendTo); 
    Smtp := SMTPClient.Create; 

    if CC <> '' then Mail.CC.Add(CC); 
    if BCC <> '' then Mail.Bcc.Add(BCC); 
    Mail.Subject := Subject; 
    Mail.Body := Body; 
    if Html = -1 then Mail.IsBodyHtml := True else Mail.IsBodyHtml := False; 

    Smtp.DeliveryMethod := SmtpDeliveryMethod.PickupDirectoryFromIis; 
    try 
    Smtp.Send(Mail); 
    except 
    Smtp.DeliveryMethod := SmtpDeliveryMethod.Network; 
    try 
     Smtp.Send(Mail); 
    except 
     raise; 
    end; 
    end; 
end; 

Я пытался играть вокруг с помощью MailAddress и MailAddressCollection, но вместо этого еще Получать ту же ошибку. Когда я отлаживать его, PARAMS прошел через это:

SendEmail([email protected], [email protected], [email protected], [email protected], Thanks for registering, Some Body Text); 

Как вы можете видеть, CC и BCC адрес электронной почты является одинаковым, но я только получаю ошибку, когда линии там.

EDIT: Часть Трассировка стека:

[FormatException: The specified string is not in the form required for an e-mail address.] 
    System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName) +1296 
    System.Net.Mail.MailAddressCollection.ParseValue(String addresses) +102 

Кто-нибудь есть какие-либо идеи, почему это так?

+0

Это сервер, который жалуется или компонент? –

+0

Я считаю, что это компонент. Трассировка стека останавливается в методе SendEmail, который я опубликовал, - я добавил часть трассировки стека к OP. – webnoob

ответ

1

Я подсчитываю 6 параметров в вызове, но 7 в сигнатуре - и порядок в вызове даже не отображается, чтобы соответствовать таковому в сигнатуре; метод ожидает, что объект и тело будут находиться до адреса BCC, но они будут помещены после адреса BCC.

Если предположить, что расхождение в числе параметров связано с перегруженной версией, которая просто вызывает эту функцию со значением по умолчанию, то, скорее всего, проблема заключается в порядковом параметре: вы передаете метод где вы должны передать адрес BCC, и, очевидно, тело не будет работать как адрес BCC.

+0

Извините, я пропустил часть моего отладки, в конце должен быть -1; Я убрал часть HTML из тела на отладке, чтобы избежать более длинного сообщения, поэтому у параметров действительно есть 7 каждый, и нет перегруженных версий. Однако теперь я вижу свою глупую ошибку. О, дорогой * румянец *. Спасибо :) – webnoob

+0

p.s Я думаю, мой мозг все еще (пытается) проснуться :) – webnoob

+0

@webnoob: Не волнуйся; происходит с лучшими из нас :) –