Help with invoking standard mail app in windows

Astan Chee astan.chee at al.com.au
Fri Dec 18 14:36:32 EST 2009


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 = "test at com.com"
txtSubject = "Test Subject"
body = "Test body"
for t in range(278):
    body+="test "
txtCC = "cc_test at 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: 
test at com.com?cc=cc_test at com.com&subject=Test%20Subject&body=Test%20bodytest%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20test%20'

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




More information about the Python-list mailing list