On Sat, 19 Dec 2009 06:36:32 +1100, Astan Chee wrote: > Kev Dwyer wrote: >> Hello Astan, >> >> Your code executes without error for me on Win98 (!) with Python 2.5 or >> XP with Python 2.6. >> >> It would help people to help you if you could provide the *exact* >> console output from when you try to execute the code, *including* the >> traceback. That way we can work out which line of code is hitting the >> exception. >> >> Cheers, >> >> Kev >> >> > Hi, > My mistake. The length of body is over 1400 characters. Here is my > updated code and result: > > import urllib, webbrowser, win32api > def mailto_url(to=None,subject=None,body=None,cc=None): > """ > encodes the content as a mailto link as described on > http://www.faqs.org/rfcs/rfc2368.html """ url = "mailto: " + > urllib.quote(to.strip(),"@,") sep = "?" > if cc: > url+= sep + "cc=" + urllib.quote(cc,"@,") sep = "&" > if subject: > url+= sep + "subject=" + urllib.quote(subject,"") sep = "&" > if body: > # Also note that line breaks in the body of a message MUST be # > encoded with "%0D%0A". (RFC 2368) > body="\r\n".join(body.splitlines()) > url+= sep + "body=" + urllib.quote(body,"") sep = "&" > return url > > txtTo = "t...@com.com" > txtSubject = "Test Subject" > body = "Test body" > for t in range(278): > body+="test " > txtCC = "cc_t...@com.com" > > url = mailto_url(txtTo,txtSubject,body,txtCC) > #win32api.ShellExecute(0,'open',url,None,None,0) > webbrowser.open(url,new=1) > # os.startfile(url) > > result: > > Traceback (most recent call last): > File "C:/stanc_home/python/mail_test.py", line 32, in <module> > webbrowser.open(url,new=1) > File "C:\Python25\lib\webbrowser.py", line 61, in open > if browser.open(url, new, autoraise): > File "C:\Python25\lib\webbrowser.py", line 518, in open > os.startfile(url) > WindowsError: [Error 5] Access is denied: 'mailto: > t...@com.com?cc=cc_test@com.com&subject=Test%20Subject&body=Test% <snip> > > Is there some sort of limitation here? If I shorten the string, it works > fine. You're right, but I'm wondering if there is a way to go around > this limitation. > Thanks again > Cheers > Astan
Hello Astan, After a bit of experimentation I find I get the same problem on XP using 2.6 for len(body) > 1973, using the os.startfile method. Some light googling suggests this is probably a limit within Outlook itself. If you just want a way to start Outlook programmatically you may be able to work around this by automating Outlook - try googling python outlook automation. If you want to start a default mail client on any machine using the mailto protocol then you'll have to limit the size of your message bodies. You may find that other mail clients have limits too - I doubt that any client (or browser) will accept urls of unlimited size. Cheers, Kev -- http://mail.python.org/mailman/listinfo/python-list