Jump to content
  • 0

Mailen met cURL naar Mailgun.


andre65

Question

Hi,

Ben al een tijdje bezig om via Curl te mailen via mailgun.
Dit omdat je hiermee wat meer kan meegeven zoals TAGs.
Ik krijg het maar niet voor elkaar, wel met postman !!
Met postman ziet het er als volgt uit, maar krijg het niet werkend in FileMaker.

curl -X POST \
 
https://api:key@api.mailgun.net/v3/mailgun.domijn.nl/messages \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Postman-Token: 4a08747e-xxx-xxxx-xxxxx-xxxxxxxx' \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F from=noreply@domijn.nl \
  -F to=info@domijn.nl \
  -F 'subject=Het subject' \
  -F 'text=Hallo allemaal'

Iemand al eens een succes geboekt? 

Met vriendelijke groet,

Andre

Link to comment

12 answers to this question

Recommended Posts

  • 0

Ik heb al zoveel variaties geprobeerd, dat ik niet meer weet wat ik allemaal getest heb.
Ik zie denk ik een dingetje over het hoofd of zit compleet fout. 
Google helpt mij ook al niet ?
 

Variabele instellen [ $curl ; Waarde: "https://<<api_key>>@api.mailgun.net/v3/mailgun.mijndomein.nl/message" ]

Invoegen vanuit URL [ Met dialoogvenster: Uit ; curl_test::curl_response ; "https://api:key-xxxxxxxxxxxxxxxx@api.mailgun.net/v3/mailgun.procent.nl/message" ; Opties voor cURL: " -X POST  -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Postman-Token: 4a08747e-xxx-xxxx-xxxxx-xxxxxxxx'  -H 'cache-control: no-cache'  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'  -F from=noreply@mijndomein.nl  -F to=info@mijndomein.nl  -F 'subject=Het subject'  -F 'text=Hallo allemaal' " ; URL niet automatisch coderen ]

 

Schermafbeelding 2019-02-14 om 13.33.40.png

Edited by andre65
Link to comment
  • 0

Probeer dit eens als cURL-options:

" -X POST  -H \"Content-Type: application/x-www-form-urlencoded\"  -H \"Postman-Token: 4a08747e-xxx-xxxx-xxxxx-xxxxxxxx\"  -H \"cache-control: no-cache\"  -H \"content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\"  -F \"from=noreply@mijndomein.nl\"  -F \"to=info@mijndomein.nl\"  -F \"subject=Het subject\"  -F \"text=Hallo allemaal\""

 

Link to comment
  • 0

Gevonden... ?
Enkel nog niet gelukt om HTML te versturen, maar dat is nog een hobbeltje ;-)

"-X POST \
 --fm-text-encoding utf-8 \
 -H 'Content-Type: application/x-www-form-urlencoded' \
 -F from="& curl_test::t_from &" \
 -F to="& curl_test::t_to &" \
 -F subject="& curl_test::t_subject &" \
 -F text="& curl_test::t_text &" \
"


image.thumb.png.0128fbc59b6c9de04c448e9defefc870.png

Link to comment
  • 0

Wat mij niet lukt is een aan bijlage meesturen vanuit een container.
Bewaar de file ($file1) in de tijdelijk folder... alleen krijg het niet voor elkaar om een bijlage eraan te knopen.. 
Iemand dit al wel gelukt? 

 

" --fm-text-encoding utf-8
 -d \"from="    & $van        & "\"
 -d \"to="      & $aan     & "\"
 -d \"subject=" & $subject    & "\"
 -d \"html="    & $html    & "\"
 -d \"text="    & $tekst    & "\"
 -d \"o:tag="   & $tag     & "\"
 -d \"tag='"    & $tag     & "'\"
 -d \"o:tracking-opens='" & "True" & "'\"
 -d \"attachment=" & $file1 & " "

 

---- het script -----

 

# Verstuur in file API_mail

 

Veld instellen [ API_mail::gt_mail_result ; "" ]

#

Variabele instellen [ $van ; Waarde: API_instellingen::t_account ]

#
Variabele instellen [ $aan ; Waarde: API_mail::t_aan ]
Variabele instellen [ $subject ; Waarde: API_mail::t_subject ]
Variabele instellen [ $html ; Waarde: API_mail::gt_html ]
Variabele instellen [ $tekst ; Waarde: API_mail::gt_tekst ]
Variabele instellen [ $tag ; Waarde: If ( API_mail::t_mail_tag = "" ; "algemeen" ; API_mail::t_mail_tag ) ]
#
Variabele instellen [ $file1 ; Waarde: Get(TijdelijkPad) & API_bijlagen::ct_bijlage1 ]
Veldinhoud exporteren [ API_bijlagen::con_bijlage1 ; “$file1” ; Mappen maken: Uit ]
#
Variabele instellen [ $$r ; Waarde: " --fm-text-encoding utf-8 -d \"from="    & $van & "\" -d \"to="      & $aan & "\" -d \"subject=" & $subject & "\" -d \"html="    & $html & "\" -d \"text="    & $tekst & "\" -d \"o:tag="   & $tag & "\" -d \"tag='"    & $tag & "'\" -d \"o:tracking-ope… ]
Invoegen vanuit URL [ Met dialoogvenster: Uit ; Doel: API_mail::gt_mail_result ; API_instellingen::ct_url ; Opties voor cURL: $$r ; URL niet automatisch coderen ]
Ga naar veld []
#

# Log

 

Link to comment
  • 0

Ik gebruik zelf mailgun niet, maar heb even naar de documentatie van Mailgun en FM gekeken:

Dit zegt de documentatie van mailgun: 
https://documentation.mailgun.com/en/latest/api-sending.html#examples 

curl -s --user 'api:YOUR_API_KEY' \
    https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
    -F from='Excited User <YOU@YOUR_DOMAIN_NAME>' \
    -F to='foo@example.com' \
    -F cc='bar@example.com' \
    -F bcc='baz@example.com' \
    -F subject='Hello' \
    -F text='Testing some Mailgun awesomness!' \
    --form-string html='<html>HTML version of the body</html>

En dit zegt de documentatie van FileMaker:

https://help.claris.com/en/pro-help/#page/FMP_Help%2Fcurl-options.html%23ww1118012

over
--form of -F <name=content> or <name=@$[$]fmvariable>  See table note 4.

En bij note 4 staat: 4.Direct file access is replaced with a FileMaker variable prefixed by the @ character.

de optie "-s" wordt niet door FM ondersteund, maar die mag je weglaten, want die zorgt er alleen voor dat de actie "silent" wordt uitgevoerd. Verder vind ik het geklooi met "escapen" altijd erg vervelend en laat ik daarom het liefst over aan FM door de quote-functie te gebruiken. Als je de opties in een list zet, dan vervang FileMaker deze ¶ zelf voor spaties, dus ook daar hoef je  niet over na te denken. 

Ik zou dan met jouw variabelen tot de volgende manier komen:

set-variable [ $result ]

Let ( [ 
	$url = "https://api.mailgun.net/v3/mailgun.domein.nl/messages" ; 
	$file1 = Tabel::Containerveld ; 
	$apikey = "key-xxxxxxxxxxxxxxx" ; 
	$curlOptions = 
		List ( 
			"-X POST" ; 
			"-FM-text-encoding utf-8" ; 
			"-H " & Quote( "Content-Length: 0" ) ; 
			"-H " & Quote ( "Content-Type: application/x-www-form-urlencoded" ) ; 
			"--user " 	& Quote ( "api:" & $apikey ) ; 
 			"-F from=" 	& Quote ( $van ) ; 
 			"-F to=" 	& Quote ( $aan ) ; 
 			"-F subject=" 	& Quote ( $subject ) ; 
 			"--form-string html=" 	& Quote ( $html ) ; 
 			"-F text=" 	& Quote ( $tekst ) ; 
 			"-F o:tag=" 	& Quote ( $tag ) ; 
 			"-F o:tracking-opens=True" ; 
 			"-F attachment=@$file1" 
	) 
] ; 
	""  
)

En vervolgens de "Insert from URL" uitvoeren

De regel "-F attachment=@$file1" is geen fout, dit is de enig juiste manier voor FileMaker om (bestanden/payload)variabelen in de opties mee te nemen. Het werkt misschien soms met "-F attachment=" & $file1, maar volgens de documentatie van FM moet je het doen zoals in het voorbeeld.

De "-H " & Quote( "Content-Length: 0" )  is misschien overbodig, maar omdat hier geen -d is gebruikt, is deze mogelijk nodig. Zoals ik al zei, ik heb Mailgun zelf nog niet gebruikt, alleen docu doorgenomen :-) 

Ben benieuwd of dit voor je werkt ... 

 

Link to comment
  • 0

HM, heb het even geprobeerd met mijn eigen advies, maar zo simpel is het dus niet. Op de comaandline met cURL lukt het prima om berichten weg te sturen met mailgun, maar dat commando ombouwen en dan vanuit FM versturen dus niet.

Ik heb zelfs het commando vanaf de commandline in een variable geslingerd en daar afgetrapt, maar dan gaat het altijd mis op de authenticatie.

Met het toevoegen in de curloption van

--trace $$trace --dump-header $$result

krijg je een hele berg met informatie, maar het levert niks zinnigs op, alleen dat de credentials vanuit FM niet werken. Moet nog eens aandacgtig kijken in de docu, waar dat aan zou kunnen liggen. Nu begrijp ik ook dat jij met data-pakketjes werkt ipv met form-data

Link to comment
  • 0

cURL in FileMaker kan tegenwoordig ook smtp babbelen en daar heeft Stu Dietz een mooi artikel over geschreven op het Blog van Skeleton Key Je kan daar ook een voorbeeld downoaden en dat werkt prima.

Je hebt dan smtp-credentials van mailgun: https://app.eu.mailgun.com/app/sending/domains/[YOUR_MAILGUN_DOMAIN]/credentials nodig i.p.v. API-credentials en die vul je dan in bij de SMTP-config in het demo-bestand.

Dit voorbeeld werkte bij mij out-of-the-box, maar ik vond het een beetje te gesegmenteerd opgezet en wilde het een stuk compacter hebben. Zodanig dat ik het gemakkelijker in mijn eigen oplossingen en bij klanten kan integreren in bestaande oplossingen, zonder meteen een extra bestand te moeten toevoegen.

Kijk maar of je iets aan hebt :-) 

SkeletonKeySMTPcURL_Aangepast.fmp12

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...