Gönderme e-postalarını otomatik hale getirmek ve iç ofis etkinlikleri için istekleri karşılamak için bir Python uygulaması geliştirdim. Bunları normal iletişimden ayrı tutmak için resmi duyuruları göndermek için kullanabileceğim alternatif bir e-posta adresi oluşturduk. Uygulamamı, alternatif gönderen için SentOnBehalfOfName
'u kullanarak e-postalar için işlemek üzere değiştirdim; ancak, toplantı istekleri için bunu yineleyemedim. Bir dizi web aramasına dayanan girişimlerim takip ediyor. - Bu Hesabımdan başarıyla gönderildi mesaj sonuçlar çıkarmadan çok bir başka gönderen için seçeneği eklediğinizdeAlternatif gönderen/düzenleyici ile bir Outlook toplantı isteği nasıl oluştururum?
Traceback (most recent call last):
File "mailer_test.py", line 49, in <module> test_sender)
File "mailer_test.py", line 38, in send_meeting_request
mtg.Send()
File "<COMObject CreateItem>", line 2, in Send
pywintypes.com_error: (-2147024809, 'The parameter is incorrect.', None, None)
bu gerçekleşir: Bu çalıştırırken, olsa da, ben hata alıyorum. Hatayı yeniden üreten test kodu aşağıdadır - Gerçek e-posta adresimi kaldırdım ancak diğer her şey aynı.
import win32com.client
OUTLOOK_APPOINTMENT_ITEM = 1
OUTLOOK_MEETING = 1
OUTLOOK_ORGANIZER = 0
OUTLOOK_OPTIONAL_ATTENDEE = 2
ONE_HOUR = 60
THIRTY_MINUTES = 30
OUTLOOK_FORMAT = '%m/%d/%Y %H:%M'
outlook_date = lambda dt: dt.strftime(OUTLOOK_FORMAT)
class OutlookClient(object):
def __init__(self):
self.outlook = win32com.client.Dispatch('Outlook.Application')
def send_meeting_request(self, subject, time, location, recipients, body,
sender=None):
mtg = self.outlook.CreateItem(OUTLOOK_APPOINTMENT_ITEM)
mtg.MeetingStatus = OUTLOOK_MEETING
mtg.Location = location
if sender:
# Want to set the sender to an address specified in the call
# This is the portion of the code that does not work
organizer = mtg.Recipients.Add(sender)
organizer.Type = OUTLOOK_ORGANIZER
for recipient in recipients:
invitee = mtg.Recipients.Add(recipient)
invitee.Type = OUTLOOK_OPTIONAL_ATTENDEE
mtg.Subject = subject
mtg.Start = outlook_date(time)
mtg.Duration = ONE_HOUR
mtg.ReminderMinutesBeforeStart = THIRTY_MINUTES
mtg.ResponseRequested = False
mtg.Body = body
mtg.Send()
if __name__ == "__main__":
import datetime
ol = OutlookClient()
meeting_time = datetime.datetime.now() + datetime.timedelta(hours=3)
test_recipients = ['[email protected]']
test_sender = '[email protected]'
ol.send_meeting_request('Test Meeting', meeting_time, 'Nowhere',
test_recipients, 'This is a test meeting.',
test_sender)
Not: C# kullanarak değilim ve ben de aslında sonra toplantı isteğini düzenlemek için çalışıyor değilim, bu durum this question aynı sorun değildir.
Güncelleme: Marnix Klooster önerdi, ben UI bakarak oldum ben bunu nasıl görmek ve kolay görünmüyor (eğer hatta mümkünse). Bunu yapmamın bir yolu, diğer kullanıcının takvime gitmek ve orada yeni bir randevu oluşturmak ve davetliler eklemek. Bu posta kutusu, Account Settings
değiştirilirken görüntülenen Sunucu Ayarları iletişim kutusundaki More Settings...
düğmesinden Advanced
sekmesine giderek eklenir. Bu soruna alternatif bir cevap, Outlook'a COM aracılığıyla erişirken varsayılan postalayıcı olarak bu posta kutusunun nasıl kullanılacağıdır.
Sadece aptalca bir soru sormak için: Bu işleve UI aracılığıyla ulaşılabilir mi? Eğer değilse (ve onu hiç bulamadım), o zaman programsal olarak da imkansız olabilir. –
Hiç aptal bir soru değil - UI aracılığıyla çok şanssız deniyorum. Ancak, http://help.lockergnome.com/office/set-meeting-organizer--ftopict697177.html, PR_RECIPIENT_FLAGS ile karıştırmanın mümkün olduğunu düşünmektedir. –