SmtpServer is a static property of the SmtpMail class, but MailMessage
is an object - unique for each message.

I guess you might care which mail server you send the message from, but
I can't see why it would matter for 99% of the cases.

 

-----Original Message-----
From: Baron Schwartz [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 06, 2005 12:24 PM
To: Log4NET User
Subject: RE: SmtpAppender not working

I agreed with you until I just thought of something: MailMessage uses
static properties to set the SMTP server etc.  Tell me if I'm wrong, but
that affects anything that's using MailMessage, on a per-process basis. 
So, if my system is using MailMessage to send email, and I set my
message up and get it ready to send but then make a call to logging
functionality before actually sending the mail, it might go through a
different SMTP server than I intended, right?

I'm not sure if this is a big problem, but it could be a subtle one.
And multi-threading issues could come into play too.  That could get
tough to debug.

Baron

--
"I am as bad as the worst, but, thank God, I am as good as the best."
     - Walt Whitman

On Sat, 2 Apr 2005, Nicko Cadell wrote:

> Baron,
>
> The runtime provides SMTP support through the MailMessage. Microsoft 
> have chosen to implement it using their CDO library. Usually CDO works

> fine, however it is possible for it to be disabled.
>
> While it should be simple to implement a system that sends mail 
> directly via port 25 I'm not sure it this is necessarily the best use 
> of resources as CDO works out of the box.
>
> If someone wants to look at doing this it may be best to make the mail

> sending functionality of the SmtpAppender pluggable between the 
> current MailMessage and an independent implementation.
>
> Nicko
>
>> -----Original Message-----
>> From: Baron Schwartz [mailto:[EMAIL PROTECTED]
>> Sent: 24 March 2005 14:27
>> To: Log4NET User
>> Subject: RE: SmtpAppender not working
>>
>> Thanks Nicko.
>>
>> I have searched more on the various error messages and found that 
>> indeed it is a problem with CDO on my laptop.  When I configure the 
>> logging on the production machines, it works fine.  I'm not familiar 
>> with what CDO is or how/why it's not working on my laptop, other than

>> maybe I borked it up when I turned off every non-essential service (I

>> believe the Systems staff has all sorts of stuff running on the 
>> production servers... not my job).
>>
>> I did try using the fully qualified name of the SMTP machine, and 
>> even its IP address; like I said I've had no problems with sending to

>> that machine with the SMTP software I've written (telnet, too).
>>
>> I looked through the source code for the SmtpAppender more.
>> I'm not sure how many people would use the more advanced settings, 
>> such as sending through the credentials of the process under which 
>> log4net runs -- and I know it's bad to reinvent the wheel.  But, just

>> to play devil's advocate, is there any justification for an SMTP 
>> appender which sends via plain SMTP, without relying on 
>> System.Web.Mail?  SMTP is trivial to implement, and this might ease 
>> the problems, and may even be more efficient as an appender.  I saw a

>> lot of griping on the Internet about this CDO issue, with no real 
>> resolutions.  It sounds like there may be some Microsoftish "extend 
>> the standard" issues with CDO.  But I'm no expert on it, as I said.
>>
>> Baron
>>
>> On Thu, 24 Mar 2005, Nicko Cadell wrote:
>>
>>>   "The transport failed to connect to the server"
>>>
>>> It looks like the CDO implementation on the machine cannot
>> access the
>>> mail server.
>>>
>>> You config is fine for accessing an unauthenticated mail relay.
>>>
>>> Can you try telneting directly into your mail server from the box 
>>> running your app:
>>>
>>>   telnet madrid 25
>>>
>>> Type in "HELO" the server should respond with some helpful message.
>>> Type "QUIT" to exit. Does this work?
>>> Have you tried specifying the smtpHost as a fully qualified
>> domain name?
>>> or as an IP address? It may be that the CDO library cannot
>> resolve the
>>> name.
>>>
>>> Are you running any local firewall software that may be blocking 
>>> outbound connections, for some or all users or applications?
>>>
>>> There seems to be several other people having the same problem with 
>>> various fixes discussed here:
>>>
>>>
>> http://www.google.co.uk/search?q=transport+failed+to+connect+to+the+s
>> e
>>> rv
>>> er+CDO
>>>
>>> Nicko
>>>
>>>
>>>> -----Original Message-----
>>>> From: Baron Schwartz [mailto:[EMAIL PROTECTED]
>>>> Sent: 21 March 2005 16:57
>>>> To: [email protected]
>>>> Subject: SmtpAppender not working
>>>>
>>>> Hi,
>>>>
>>>> I've searched the web and read the manual and some of the
>> code, but
>>>> feel free to point me somewhere there's an answer... I can't find 
>>>> much on this.
>>>>
>>>> My SmtpAppender isn't able to connect to the smtpHost.  I'm on 
>>>> Windows using MS framework v1.1.  Here's my config file
>> ([EMAIL PROTECTED]
>>>> is bogus -- I'm using a real value), test code, and the error I'm 
>>>> getting in the console window when the log fails to
>> email.  The SMTP
>>>> server, madrid, is an open relay inside our firewall,
>> which requires
>>>> no authentication or anything.
>>>> I send mail with it from a bunch of other apps.
>>>>
>>>> One thing I did notice, is that apparently there are some other 
>>>> parameters I could be putting in the config file, but I'm
>> not sure
>>>> what they should be (the example config seems to be incomplete).
>>>> Starting at SmtpAppender.cs, and looking at its
>> properties, it looks
>>>> like username, password etc *could* be put in the config file.  I 
>>>> didn't read through enough of the code to determine what the 
>>>> parameters would be named, because they wouldn't be necessary for 
>>>> this application, but if someone points me to how I can
>> find it out
>>>> (short of stepping through the code) I'm happy to update the 
>>>> example, or augment it with a more complete example.
>>>>
>>>> Thanks for any help.
>>>>
>>>> --- Snip ---
>>>> <?xml version="1.0" encoding="utf-8" ?> <configuration>
>>>>     <configSections>
>>>>         <section name="log4net"
>>>> type="log4net.Config.Log4NetConfigurationSectionHandler,
>> log4net" />
>>>>     </configSections>
>>>>     <log4net>
>>>>         <appender name="SmtpAppender"
>>>> type="log4net.Appender.SmtpAppender">
>>>>             <to value="[EMAIL PROTECTED]" />
>>>>             <from value="[EMAIL PROTECTED]" />
>>>>             <subject value="Baaaaad error" />
>>>>             <smtpHost value="madrid" />
>>>>             <bufferSize value="4" />
>>>>             <lossy value="true" />
>>>>             <evaluator type="log4net.Core.LevelEvaluator">
>>>>                 <threshold value="WARN"/>
>>>>             </evaluator>
>>>>             <layout type="log4net.Layout.PatternLayout">
>>>>                 <conversionPattern value="%-5p %-20t %d
>> %c line %L%n
>>>> %m%n" />
>>>>             </layout>
>>>>         </appender>
>>>>         <root>
>>>>             <appender-ref ref="SmtpAppender" />
>>>>         </root>
>>>>     </log4net>
>>>>     <appSettings>
>>>>     </appSettings>
>>>> </configuration>
>>>> --- Snip ---
>>>> using System;
>>>> using log4net;
>>>> using log4net.Config;
>>>> namespace TestHarness {
>>>>     public class TestHarness {
>>>>         static readonly ILog log =
>>>> LogManager.GetLogger(typeof(TestHarness));
>>>>         public static void Main(string[] args) {
>>>>             XmlConfigurator.Configure();
>>>>             log.Warn("hey, this is an error!");
>>>>         }
>>>>     }
>>>> }
>>>> --- Snip ---
>>>> log4net:ERROR [SmtpAppender] Error occurred while sending e-mail 
>>>> notification.
>>>> System.Web.HttpException: Could not access 'CDO.Message'
>>>> object. ---> System.Ref
>>>> lection.TargetInvocationException: Exception has been
>> thrown by the
>>>> target of an  invocation. --->
>>>> System.Runtime.InteropServices.COMException
>>>> (0x80040213): The
>>>> transport failed to connect to the server.
>>>>
>>>>    --- End of inner exception stack trace ---
>>>>    at System.RuntimeType.InvokeDispMethod(String name,
>> BindingFlags
>>>> invokeAttr, Object target, Object[] args, Boolean[]
>> byrefModifiers,
>>>> Int32 culture, String[]
>>>> namedParameters)
>>>>    at System.RuntimeType.InvokeMember(String name, BindingFlags 
>>>> invokeAttr, Bind er binder, Object target, Object[] args, 
>>>> ParameterModifier[] modifiers, CultureI nfo culture, String[]
>>>> namedParameters)
>>>>    at System.Type.InvokeMember(String name, BindingFlags
>> invokeAttr,
>>>> Binder bind er, Object target, Object[] args)
>>>>    at System.Web.Mail.LateBoundAccessHelper.CallMethod(Type
>>>> type, Object obj, St ring methodName, Object[] args)
>>>>    at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object
>>>> obj, String method Name, Object[] args)
>>>>    --- End of inner exception stack trace ---
>>>>    at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object
>>>> obj, String method Name, Object[] args)
>>>>    at System.Web.Mail.CdoSysHelper.Send(MailMessage message)
>>>>    at System.Web.Mail.SmtpMail.Send(MailMessage message)
>>>>    at log4net.Appender.SmtpAppender.SendBuffer(LoggingEvent[]
>>>> events)
>>>>
>>>
>>>
>>
>
>

Reply via email to