Office365-REST-Python-Client icon indicating copy to clipboard operation
Office365-REST-Python-Client copied to clipboard

Send Mail with an user raises error in the execute_query()

Open R-LIBIN opened this issue 4 years ago • 1 comments

Hello Team,

I am facing issue to send mail from a user in AAD. The mail problem is in execute_query().

I would like top send it via ClientConfidentialClient with msal lib and send mail with a specified user with access token.

import msal from office365.graph_client import GraphClient from office365.outlook.mail.messages.message import Message

def acquire_token(): """ Acquire token via MSAL """ authority_url = 'https://login.microsoftonline.com/{tenant_id}' app = msal.ConfidentialClientApplication( authority=authority_url, client_id='', client_credential='' ) token = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])

return token

client = GraphClient(acquire_token)

print

message = client.users["[email protected]"].messages.new()

#client.load(message)

message.sender = "[email protected]" message.subject = "Meet for lunch?" message.body = "The new cafeteria is open." message.to_recipients = ["[email protected]"]

mailbox = client.users["[email protected]"]

#mailbox.send_mail(message)

#message.send()

client.users["[email protected]"].send_mail(message).execute_query()

I am receiving the errors one or the other.

error: Traceback (most recent call last): File "C:\Users\712645\OneDrive - Cognizant\Desktop\new.py", line 44, in client.users["[email protected]"].send_mail(message).execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_object.py", line 41, in execute_query self.context.execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_runtime_context.py", line 132, in execute_query self.pending_request().execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 93, in execute_query response = self.execute_request_direct(request) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\odata\odata_request.py", line 36, in execute_request_direct return super(ODataRequest, self).execute_request_direct(request) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 137, in execute_request_direct response = requests.get(url=request_options.url, File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 75, in get return request('get', url, params=params, **kwargs) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 528, in request prep = self.prepare_request(req) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 456, in prepare_request p.prepare( File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 316, in prepare self.prepare_url(url, params) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 390, in prepare_url raise MissingSchema(error) requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?

or

for the me, the errors are very confusing to solve.

Traceback (most recent call last): File "C:\Users\712645\OneDrive - Cognizant\Desktop\testOut.py", line 25, in client.me.send_mail(message).execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_object.py", line 41, in execute_query self.context.execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_runtime_context.py", line 132, in execute_query self.pending_request().execute_query() File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 93, in execute_query response = self.execute_request_direct(request) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\odata\odata_request.py", line 36, in execute_request_direct return super(ODataRequest, self).execute_request_direct(request) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 105, in execute_request_direct self.context.authenticate_request(request_options) File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\graph_client.py", line 97, in authenticate_request token_json = self._acquire_token_callback() TypeError: 'dict' object is not callable

Thank you. 

Regards, Libin

R-LIBIN avatar Dec 01 '21 21:12 R-LIBIN

Please conform whether execute_query() is required to be called and the acquire_token is passed as a pointer or a function callback. It is very much confusing.

R-LIBIN avatar Dec 01 '21 21:12 R-LIBIN

Hello. Have you found a way around this bug?

glatzmarcus avatar Feb 09 '23 15:02 glatzmarcus

Nope.

On Thu, 9 Feb, 2023, 8:59 pm glatzmarcus, @.***> wrote:

Hello. Have you found a way around this bug?

— Reply to this email directly, view it on GitHub https://github.com/vgrem/Office365-REST-Python-Client/issues/442#issuecomment-1424375687, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEBCZFMHSGYPUZKUXU55WL3WWUEPBANCNFSM5JFQNDBQ . You are receiving this because you authored the thread.Message ID: @.***>

R-LIBIN avatar Feb 11 '23 03:02 R-LIBIN

This issue has been addressed, here is an example:

client = GraphClient.with_client_secret(tenant_name_or_id, client_id, client_secret)
client.users[user_principal_name_or_id].messages.add(
    subject="Meet for lunch?",
    body="The new cafeteria is open.",
    to_recipients=["[email protected]"],
).send().execute_query()

vgrem avatar Mar 02 '24 19:03 vgrem