MailMessage 
com.sun.star.mail モジュールのサービスを利用するとメールクライアンとなしでメールが送信できます (実際にメールを送信するのは Python の smtplib)。
しかし、メールを送信するときに必要な com.sun.star.mail.MailMessage サービスが提供されておらず、自分で com.sun.star.mail.XMailMessage インターフェースを作成するひつようがあります。
Py-UNO ではサービスを作成できるわけです。しかし、OOo Basic ではインターフェースの代用として CreateUnoListener 関数で作成したリスナーを使用するとしても、Attribute の設定ができません。
というわけで、OOo Basic からも利用できる MailMessage サービスを作成します。
i87023
によると本体で実装されることはないようです。
パッケージ 
- パッケージ
- ドキュメント (mytools.mail.XMailMessage2 インターフェースの IDL リファレンス)
OOo Basic での利用 
OOo Basic から利用する方法です。OOoBasic/Generic/SendingMail 参照。
作成 
com.sun.star.mail.MailMessage サービスの実装ですが、既存の com.sun.star.mail.XMailMessage インターフェースだけでは送信者のメールアドレス、送信者名などを設定するメソッドが不十分です。そこで新しくインターフェースを作成する必要があるので IDL ファイルを用意します。
サービス名は mytools.mail.MailMessage です。新たに作成するインターフェースも mytools.mail.XMailMessage2 です。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| | #ifndef __mytools_mail_XMailMessage2_idl__
#define __mytools_mail_XMailMessage2_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_datatransfer_XTransferable_idl__
#include <com/sun/star/datatransfer/XTransferable.idl>
#endif
module mytools { module mail {
published interface XMailMessage2 : com::sun::star::uno::XInterface
{
string getSenderAddress();
void setSenderAddress( [in] string aSenderAddress );
string getSenderName();
void setSenderName( [in] string aSenderName );
string getReplyToAddress();
void setReplyToAddress( [in] string aReplyToAddress );
string getSubject();
void setSubject( [in] string aSubject );
com::sun::star::datatransfer::XTransferable getBody();
void setBody(
[in] com::sun::star::datatransfer::XTransferable xTransferable );
};
}; };
#endif
|
サービス 
サービス本体は上記 IDL にしたがって com.sun.star.mail.XMailMessage インターフェースおよび mytools.mail.XMailMessage インターフェースを継承するクラスをサービスとして登録します。