Waterpump not working as i wished | Voltage problem

Hello Forum!
I am using the Arduino UNO for a little project I started yesterday. A sensor senses if the soil of a plant is too dry and then turns on a waterpump for x seconds.

It is all quiet simple yet and working so far. The problem is:
I thought the Digital in/out were outputting 5V. I am using the Micro Submersible Motor Pump Water Pump DC 3-6V 120L/H 1.1M Head Low Noise
So it 5V should be just fine. I have it in the Pin 12 and GND. It is not turing on (sometimes it is but it has too less power to run). If I put it in the 5V powerout of the Arduino instead, it works just fine! (But then it would be on all the time and not triggable. I could use some circuit but I thought it could be as simple as that.)

I read the voltages and got (when the pump is plugged in Pin 12 & gnd and fired by the code) 0,71V
When it is in the 5V powerout, i get 18V.

I mesured the voltage outs without the pump and got in the Pin 12 4,88V and in the 5V power out 4,88V as well.

I dont know why Pin12 is not working… Do you have suggestions? I feel like I am having an obvious problem but I am just getting into electroincs.

Here the code:

int rainPin = A0;
int pumpPin = 12;
int waterinSec = 10;
// you can adjust the threshold value
int thresholdValue = 520;
//boolean watering = false;

void setup(){
  pinMode(rainPin, INPUT);
  pinMode(pumpPin, OUTPUT);
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  digitalWrite(12, HIGH); 
}

void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(rainPin);
  Serial.print(sensorValue);
  if(sensorValue < thresholdValue){
    Serial.println(" - Doesn't need watering");
  }
  else {
    Serial.println(" - Time to water your plant");
    Serial.println("Second check in 10 seconds");
    delay(10000);
    sensorValue = analogRead(rainPin);
    if(sensorValue > thresholdValue){
       Serial.println("Second check successful, watering.");
      String pumpon = "Pump ON for " + String(waterinSec) + " Seconds";
      Serial.println(pumpon);
      digitalWrite(pumpPin,HIGH);
      delay(waterinSec*1000);
      Serial.println("Pump OFF");
      digitalWrite(pumpPin,LOW);
      
      
      }
    
  }
  delay(1000);
}

Do not attempt to run a motor by connecting it directly to the arduino.
The pins cannot supply the current demands of a physical motor.
You need to power the motor from an independent power supply and use the arduino pins to control the motor driver.