2011-12-23 2 views
1

Outlook 자동화를 사용하여 Delphi에서 전자 메일을 보낼 때 특정 보낸 사람 주소를 사용할 수 있어야합니다. 지금 코드를 실행하고 있지만 Outlook의 기본 계정을 사용하며 다른 계정을 지정할 수 있어야합니다. 어떻게이 작업을 수행 할 수 있습니까?Outlook 및 Delphi를 사용하여 특정 계정에서 전자 메일 보내기

저는 VBA에서이 작업을 수행 했으므로 Delphi에서도 가능해야합니다.

+3

VBA에서 작업 한 경우 수행해야 할 작업을 알고 델파이 구현에서 벗어났습니다. 아마도 특정 계정의 전자 메일/사용자 및/또는 암호를 사용하여 MAPI 네임 스페이스에 로그온하는 곳일 수 있습니다. 몇 가지 코드 (VBA와 Delphi 모두 가능)가 없다면 우리는 모두 여기 어둠 속에서 찔러 버릴 수 있습니다. –

답변

0

귀하의 문제는 계정 컬렉션을 열거/인덱싱하는 것과 관련이 있습니다.이 문제는 VBA에서 익숙한 델파이보다 약간 덜 편리합니다.

아래 예제 코드를 게시 해 드리겠습니다. 간결함과 붙여 넣기를 위해 OleVariants를 사용하고 olMailItem을 로컬로 선언했습니다. 프로덕션 코드에서는 초기 바인딩을 사용해야합니다.

또한이 같은 자동화를 수행 할 때 Outlook에서 발생하는 모든 보안 경고를 처리하는 것이 좋습니다.

const 
    olMailItem = 0; 

var 
    application: OleVariant; 
    mailItem: OleVariant; 

begin 
    application := getActiveOleObject('Outlook.Application'); 

    mailItem := application.createItem(olMailItem); 

    mailItem.recipients.add('[email protected]'); 
    mailItem.subject := 'This is a subject'; 
    mailItem.body := 'StackOverflow... the best time to hang out at christmas.'; 

    // This line allows you to pick any account by name 
    mailItem.sendUsingAccount := application.session.accounts.item('some account'); 

    mailItem.send; 
end; 
+0

결과 : = '잘못된 변형 연산' – OZ8HP

+1

어떤 라인에서? 디버거가 당신에게 무엇을 말 했나요? 계정 이름을 실제로 존재하는 계정 이름으로 대체 했습니까? Outlook을 실행할 때 Outlook이 시작 되었습니까? Outlook 2007 이상을 실행하고 있습니까? 도움이 필요하면 더 많은 정보를 제공해주십시오. 내가 게시 한 코드는 사소하고 테스트 된 것이므로 중요한 것을 알려주지 않는다는 가정하에 작업하십시오. –

+0

일부 이상한 이유로 코드 Outlook.Session.Accounts.Item (i) = aSender 인 경우 이이 오류의 공급자입니다. 으로 변경했습니다. AccountCurrent : = Outlook.Session.Accounts.Item (i); AccountCurrent = aSender이면 여기서 AccountCurrent는 문자열입니다 매우 이상하게 들리지만 변한 유일한 것이므로 코드가 작동합니다. 유효한 계정이 선택되어 있는지 확인해야합니다. 그렇지 않으면 다른 오류가 발생합니다. – OZ8HP

관련 문제