Ga naar inhoud
  • 0

Mailen met cURL naar Mailgun.


andre65

Vraag

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 naar reactie

12 antwoorden op deze vraag

Aanbevolen berichten

  • 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

aangepast door andre65
Link naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...